私の理解のために、beginTimeは "ちょっとちょっと、ちょうど12時に始める"と言うのに使うことができます。しかし、私はCFTimeInterval型でこれをどのように伝えますか?私は秒を指定する一種の "浮動小数点"値以上のものではないと考えました。CFTimeIntervalを使用してアニメーションのbeginTimeを指定するにはどうすればよいですか?
それとも他に何その後、CAMediaTimingプロトコルで指定されたTIMEOFFSETプロパティに違いだろうか?
私の理解のために、beginTimeは "ちょっとちょっと、ちょうど12時に始める"と言うのに使うことができます。しかし、私はCFTimeInterval型でこれをどのように伝えますか?私は秒を指定する一種の "浮動小数点"値以上のものではないと考えました。CFTimeIntervalを使用してアニメーションのbeginTimeを指定するにはどうすればよいですか?
それとも他に何その後、CAMediaTimingプロトコルで指定されたTIMEOFFSETプロパティに違いだろうか?
いいえ、それは開始時間が何をするかではありません。これは、親アニメーションからの相対的な開始時間を指定します(デフォルトでは、グループ内の複数のアニメーションはすべて一度に起動します)。 documentationから
:
が該当する場合、その親 オブジェクトに関連して 受信機の時間を始める指定します。
timeOffsetは、オフセット時のフレームでアニメーションを開始させ、終了時にループします。言い換えれば、A、B、C、D、Eがアニメーションのフレームであると想像してください。これは、beginTimeまたはtimeOffsetを、通常の場合にフレームCをヒットしたときと同じ値に設定すると、私はドキュメントで逃した何
Normal |A->B->C->D->E
beginTime: | A->B->C->D->E
timeOffset: |C->D->E->A->B
:あなたは、現在の時刻を取得し、そこから自分のオフセットを指定するためにきたので、開始時間は、「コアアニメーション絶対時間」である:
// Start in 5 seconds
theAnimation.beginTime = CACurrentMediaTime()+5;
私はドキュメントを考えますのCAMediaTimingプロトコルは非常に悪いです。 Time Warp in Animationは、CAMediaTiming Protocolのすべてのプロパティの詳細な説明(再ドキュメント化)です。
あなたはそうのような層の時空へ変換する最初の必要性:
let currentLayerTime = myLayer.convertTime(CACurrentMediaTime(), fromLayer: nil)
その後、あなたは層の今の時間に開始時間を相対的に設定することができます。例えば、アニメーションが2Sで始まる作るために:
myAnimation.beginTime = currentLayerTime + 2
をあなたはまた、おそらくあなたは、最終的なプロパティの値を設定することができるようにアニメーションを追加する前に、後方「FILLMODE」に設定することをお勧めします:
timeOffsetを設定しても、アニメーションが遅れたり初期時間が変更されることはありません。あなたの 'timeOffset'の行は実際には 'timeOffset'と 'beginTime' ...を設定しているのでしょうか?一部:あなただけのようなアニメーションを実行する方法があるかどうかを知っています –
あなたは、 –
ルイを明確に、正しいです| ----- A-> B-> C、begintimeの場合と基本的に同じですが、周りをループするのではなく終わりになると停止しますか? – pho0