Ewa*_*n D 2 iphone animation core-animation
我需要能够在静态图像上显示动画.
鉴于MPMoviePlayer无法控制任何有用的东西,我能想到的唯一方法就是使用多个静态图像,我们会逐一显示这些图像以创建"类似电影"的动画.
我知道我们可以使用UIImageView来执行此操作(通过设置UIImageView animationImages属性然后调用startAnimation),但是我们将在动画中拥有超过100个图像 - 因此内存使用量将最大化.
有没有人有任何好方法来做这种动画?使用Core Animation还是OpenGL?
我的猜测是我们需要创建一个图像缓冲区,当我们加载新图像时,我们会显示图像缓冲区中的图像?
您可以使用Core Animation CALayer来托管动画,并将一系列CALayer交换进出主图层以执行逐帧动画.您可以使用其contents属性将图像框架托管CALayer的内容设置为CGImageRef.可以根据需要创建包含图像的一系列CALayers并将其存储在NSMutableArray中,然后在完成时删除以最小化内存使用.
您可以通过在CATransaction中包装replaceSublayer:with:方法调用来设置帧之间的转换持续时间,如下所示:
[CATransaction begin];
[CATransaction setValue:[NSNumber numberWithFloat:0.25f] // 1/4th of a second per frame
forKey:kCATransactionAnimationDuration];
[mainLayer replaceSublayer:[imageLayers objectAtIndex:oldImageIndex] with:[imageLayers objectAtIndex:newImageIndex]];
[CATransaction commit];
Run Code Online (Sandbox Code Playgroud)
如果您的帧显示时间足够短,您也可以在主层的内容中交换进出CGImageRef.
归档时间: |
|
查看次数: |
4592 次 |
最近记录: |