13

ダムのwhileループからかなり大きなアニメーションを書き直しました(drawRectをx回起動します)。これは、私が理解できない最後のことです。

アニメーションの現在の経過時間を取得するにはどうすればよいですか?現在のCFTimeIntervalを取得する方法を知っています(CABasicAnimationを一時停止する方法はありますか?):

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

しかし、これを使用して、アニメーションが開始された瞬間から現在の経過時間を計算するにはどうすればよいですか?beginTimeは常に0.0のようですが、アニメーションが開始する瞬間を設定してから、beginTimeからcurrentTimeを抽出する必要がありますか?

私が見落としている単純なものである場合は申し訳ありませんが、私は昨日CoreAnimationを使い始めました。:)

編集: beginTimeを設定することはそれを行う方法ではなく、ここでは本当に途方に暮れています。

4

1 に答える 1

9

必要なことを行うためのおそらくより簡単な方法は、CABasicAnimation を作成して、次のように開始時間を明示的に設定することです。

basicAnimation.beginTime = CACurrentMediaTime();

後で、次の方法で経過時間を把握できます。

CFTimeInterval elapsedTime = CACurrentMediaTime() - basicAnimation.beginTime;

そして、次の方法でパーセンテージを取得します。

progress = elapsedTime / basicAnimation.duration;

(timeOffset などがある場合、コードは少し複雑になります。)

于 2014-01-08T10:48:04.713 に答える