2

我正在尝试做类似的事情:

<Create a CAAnimationGroup aGroup with removedOnCompletion = NO ...>
[aLayer addAnimation:aGroup forKey:@"someKey"];

于是动画组播放...

然后我想检索相同的动画组而不重新创建它并将其重新添加到图层以便它重播。就像是:

CAAnimationGroup* theOldGroup = (CAAnimationGroup*)[aLayer animationForKey:@"someKey"];
[aLayer addAnimation:theOldGroup forKey:@"someKey"];

但是,aGroup 的地址与我从 animationForKey 得到的地址不同。并尝试将其速度设置为 1 或对其执行任何操作会使应用程序崩溃(又名 BAD_ACCESS)

我错过了什么?

4

1 回答 1

2

不,您不能按照您在问题中描述的方式重复使用它们。


文档animationForKey:说你不能这样做(在讨论中):

动画键:

返回添加到具有指定标识符的接收器的动画。

- (CAAnimation *)animationForKey:(NSString *)key

参数

key
一个字符串,它指定动画的标识符。

返回值

与标识符匹配的动画对象,或者nil如果不存在此类动画。

讨论

尝试修改返回对象的任何属性将导致未定义的行为。

于 2012-06-13T08:19:29.500 回答