2013-02-24 19 views
10

は、私はちょうどダムからかなり大きなアニメーションを書き直し(のdrawRectを発射するには:回X)、これは、私はちょうど把握することはできません最後の事..ですCABasicAnimation現在の経過時間

どのように私は得ることができます私のアニメーションの現在の経過時間?

CFTimeInterval currentTime = [self.multiplierLayer convertTime:CACurrentMediaTime() fromLayer:nil]; 

しかし、どのように私は私のアニメーションが開始された瞬間から現在の経過時間を計算するためにこれを使用することができます:私は現在CFTimeInterval(Is there a way to pause a CABasicAnimation?)を取得する方法を知っていますか? beginTimeは常に0.0と思われますが、アニメーションが開始された瞬間を設定してからbeginTimeからcurrentTimeを抽出する必要がありますか?

私が見落としているシンプルなことは申し訳ありませんが、私は昨日Core Animationを使い始めました。 :)

編集: は開始時間を設定すると、本当にここ損失で、ないそれを行う方法です。あなたはCABasicAnimationを明示的のように、開始時間を設定作成するときにやりたい

+0

なぜアニメーションを開始したときに現在の時刻を記録することができないのですか(それを知っていなければならないと思いますが)。 – trojanfoe

+1

またはデリゲートであり、 'animationDidStart:' –

+0

をチェックインします。現在の時刻を 'animationDidStart:'の中に記録します。はい、1つのアニメーションにはうまくいくはずですが、複数のアニメーションはどうですか?それらをすべて追跡するだけですか?アニメーションから経過時間を得る方法が他にない場合は、残念です。 –

答えて

6

Aおそらく簡単な方法は次のとおりです。

basicAnimation.beginTime = CACurrentMediaTime(); 

後で上に経過時間を把握することができます

CFTimeInterval elapsedTime = CACurrentMediaTime() - basicAnimation.beginTime; 

、スルー率を得ると:

progress = elapsedTime/basicAnimation.duration; 

(コード