嗨,我正在从多个图像创建一个关键帧动画。我的问题是,我希望动画立即从一个图像切换到下一个图像,而不是淡入淡出。
CALayer *animLayer = [CALayer layer];
animLayer.bounds = CGRectMake(0, 0, width, height);
animLayer.position = CGPointMake(0, 0);
CAKeyframeAnimation *customFrameAnimation = [CAKeyframeAnimation animationWithKeyPath:@"contents"];
NSArray *sizeValues = [NSArray arrayWithObjects:(id)image1, (id)image2, nil];
NSArray *times = [NSArray arrayWithObjects:[NSNumber numberWithFloat:0.0f], [NSNumber numberWithFloat:0.5f], nil];
NSArray *timingFunctions = [NSArray arrayWithObjects: [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionDefault], [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionDefault], nil];
[customFrameAnimation setValues:sizeValues];
[customFrameAnimation setKeyTimes:times];
customFrameAnimation.duration=5.0;
customFrameAnimation.beginTime = 1e-100;
customFrameAnimation.fillMode = kCAFillModeRemoved;
customFrameAnimation.timingFunctions = timingFunctions;
customFrameAnimation.removedOnCompletion = YES;
[animLayer addAnimation:customFrameAnimation forKey:nil]; 提前谢谢。
发布于 2010-10-28 13:09:04
动画需要将其calculationMode设定为kCAAnimationDiscrete。
看一下描述如何使用calculationMode的documentation on keyTimes:
keyTimes数组中的相应值取决于calculationMode属性。
如果keyTimes数组中的值对于calculationMode无效或不合适,则会忽略keyTimes数组。
然后您可以阅读计算模式的说明:
值计算模式
这些常量由calculationMode属性使用。
NSString * const kCAAnimationLinear;
NSString * const kCAAnimationDiscrete;
NSString * const kCAAnimationPaced;
常量
kCAAnimationLinear
关键帧值之间的简单线性计算。
在Mac OS X v10.5及更高版本中可用。在CAAnimation.h中声明。
kCAAnimationDiscrete
每个关键帧值依次使用,不计算插值的值。在Mac OS X v10.5及更高版本中可用。在CAAnimation.h中声明。
kCAAnimationPaced
将对关键帧值进行插值,以在整个动画中产生均匀的步幅。
在Mac OS X v10.5及更高版本中可用。在CAAnimation.h中声明。
换句话说,离散计算模式使动画跳到每个关键帧,而不是动画/变换到每个关键帧。
诚挚的问候。
https://stackoverflow.com/questions/4024685
复制相似问题