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:は、この方法では実行できないと記載されています(ディスカッションで)。

AnimationForKey:

指定された識別子でレシーバーに追加されたアニメーションを返します。

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

パラメーター

key
アニメーションの識別子を指定する文字列。

戻り値

識別子に一致するアニメーションオブジェクト、またはnilそのようなアニメーションが存在しない場合。

討論

返されたオブジェクトのプロパティを変更しようとすると、未定義の動作が発生します。

于 2012-06-13T08:19:29.500 に答える