From db92d480e793ae700ab8c79a831105f7aa2cbdeb Mon Sep 17 00:00:00 2001 From: yangqingren <564008993@qq.com> Date: Mon, 9 Nov 2020 19:36:32 +0800 Subject: [PATCH] fix: play with range --- SVGAPlayer.podspec | 2 +- SVGAPlayer/ViewController.m | 7 ++++--- Source/SVGAPlayer.m | 18 +++++++++++++++++- 3 files changed, 22 insertions(+), 5 deletions(-) diff --git a/SVGAPlayer.podspec b/SVGAPlayer.podspec index c5cd46f..d44fb8b 100644 --- a/SVGAPlayer.podspec +++ b/SVGAPlayer.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = "SVGAPlayer" - s.version = "2.5.5" + s.version = "2.5.6" s.summary = "SVGAPlayer 是一个高性能的动画播放器" s.description = <<-DESC SVGA 是一种全新的动画格式,由 YY UED 团队主导开发; diff --git a/SVGAPlayer/ViewController.m b/SVGAPlayer/ViewController.m index ab84ce7..fd0f546 100644 --- a/SVGAPlayer/ViewController.m +++ b/SVGAPlayer/ViewController.m @@ -67,12 +67,13 @@ - (IBAction)onChange:(id)sender { NSParagraphStyleAttributeName: para, }]; [self.aPlayer setAttributedText:str forKey:@"banner"]; - -// self.aPlayer.mianRunLoopMode = NSDefaultRunLoopMode; + [self.aPlayer startAnimation]; + +// [self.aPlayer startAnimationWithRange:NSMakeRange(10, 25) reverse:YES]; } } failureBlock:nil]; - +// // [parser parseWithURL:[NSURL URLWithString:@"https://github.com/svga/SVGA-Samples/raw/master_aep/BitmapColorArea1.svga"] completionBlock:^(SVGAVideoEntity * _Nullable videoItem) { // if (videoItem != nil) { // self.aPlayer.videoItem = videoItem; diff --git a/Source/SVGAPlayer.m b/Source/SVGAPlayer.m index 18ccc2d..3226cfd 100644 --- a/Source/SVGAPlayer.m +++ b/Source/SVGAPlayer.m @@ -89,6 +89,19 @@ - (void)startAnimation { } - (void)startAnimationWithRange:(NSRange)range reverse:(BOOL)reverse { + if (self.videoItem == nil) { + NSLog(@"videoItem could not be nil!"); + return; + } else if (self.drawLayer == nil) { + self.videoItem = _videoItem; + } + [self stopAnimation:NO]; + self.loopCount = 0; + if (self.videoItem.FPS == 0) { + NSLog(@"videoItem FPS could not be 0!"); + return; + } + self.currentRange = range; self.reversing = reverse; if (reverse) { @@ -97,7 +110,10 @@ - (void)startAnimationWithRange:(NSRange)range reverse:(BOOL)reverse { else { self.currentFrame = MAX(0, range.location); } - [self startAnimation]; + self.forwardAnimating = !self.reversing; + self.displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(next)]; + self.displayLink.frameInterval = 60 / self.videoItem.FPS; + [self.displayLink addToRunLoop:[NSRunLoop mainRunLoop] forMode:self.mainRunLoopMode]; } - (void)pauseAnimation {