2011-12-04 13 views
2

キー "SpeedBoat"を持つCAKeyframeAnimationをCALayerに追加しました。アニメーション中にアニメーションの速度を変更しようとしています。進行中のCAKeyframeAnimationアニメーションの速度を変更する

[[self.shipLayer animationForKey:@"SpeedBoat"] setSpeed:([[self.shipLayer animationForKey:@"SpeedBoat"] speed] + deltaTime)]; 

この行にはエラーがあるようです。しかし、私はデバッグ情報を取得しません。 ここで何が間違っていますか?進行中のアニメーションの速度を変更することは可能ですか?

誰かが私を助けることができればそれは非常にいいだろう:)

敬具 xenの

答えて

2

はい、あなたは間違いなく、アニメーションの速度を変更することができます。それはCAKeyframeAnimationがプロトコルCAMediaTimingに確認するからです。

アップルはこれをAnimation Types and Timing Programming Guideで説明しています。

Timing, Timespaces, and CAAnimationのセクションをご覧ください。具体

「がアニメーションまたは層の速度のプロパティは、このスケーリング係数を指定する。例えば、2意志の速度値を持つ時空で層に取り付けられている10秒のアニメーション。そのレイヤのサブレイヤが2の速度係数を定義する場合、アニメーションは1/4の時間(スーパーレイヤの速度*サブレイヤの速度)で表示されます。 "

また、これをカバーする優れた動画の方向を指摘できますか?あなたも、それを効果的に "凍結" するために、アニメーションの速度を変更することができます

WWDC 2010 Sessions 424 and 425 Core Animation in Practice Parts 1 and 2

WWDC 2011 Session 421 Core Animation Essentials

Developer Videos Session 716 Core Animation Techniques for iPhone and Mac

:見て。一時停止や再開には非常に便利です。 1つの注意点は、アプリがバックグラウンドであるか、メモリからパージされている場合、正しく動作しないことです。あなたは手動で対処しなければならないだろう。

Is there an issue with updating a CALayer position while the layer is paused?

Technical Q&A QA1673、そのプロセスの詳細は、この質問に対する私の答えを参照してください。

関連する問題