2009-07-23 1 views
3

彼らが言う:開始時間と TIMEOFFSET:「アニメーションレイヤのタイムスペース」と「ローカルアクティブタイム」の意味は何ですか?

タイミング・プロトコルは、2つのプロパティを使用して、その期間 にアニメーションを秒の一定 数を起動する手段 を提供します。 beginTimeは を指定し、 の時間にアニメーションを開始し、アニメーションは を開始し、 アニメーションのレイヤのタイムスペースにスケーリングします。 timeOffset は、追加のオフセットを指定しますが、ローカルの有効時間には と記載されています。 の両方の値を組み合わせて、最終開始オフセット を決定します。

私はタイムスペースについて知っています。しかし、私はここで彼らの言葉を掴むことができない。

"は、アニメーションのレイヤのタイムスペースに比例します。

  • アニメータースピード=アニメーションビューのスピードの1.0
  • 層= 2.0
  • スーパーレイヤの速さ= 2.0
  • BEGINTIME = 1.0

は、私はこのことを考えてみましょう0.25秒後にリアルタイムで開始されますか? (二重スーパーレイヤー速度、サブレイヤー速度を2倍にするので、4倍速、アニメーターのローカル速度は1です。

timeOffsetは「ローカルアクティブ時間」に記載されています。速度で歪んだ時間を意味しますか?アニメータオブジェクトのspeedプロパティが1.0の場合、それはここのローカルアクティブ時間ですか?

ローカルアクティブ時間は実際には私にとってはさまざまな意味があります。たとえば、タイムゾーン階層全体のクロック時間、または時間など、時間軸の時間にどのように影響しますか。誰かがここで詳細を指摘できれば素晴らしいだろう。

+0

「彼ら」は誰ですか? – gnovice

+0

これはiPhoneに関する質問です。だからApple;) – Thanks

答えて

2

Core Animationのヘッダーを確認してください。特にCAMediaTiming.h:

/* The CAMediaTiming protocol is implemented by layers and animations, it 
* models a hierarchical timing system, with each object describing the 
* mapping from time values in the object's parent to local time. 
* 
* Absolute time is defined as mach time converted to seconds. The 
* CACurrentMediaTime function is provided as a convenience for querying the 
* current absolute time. 
* 
* The conversion from parent time to local time has two stages: 
* 
* 1. conversion to "active local time". This includes the point at 
* which the object appears in the parent's timeline, and how fast it 
* plays relative to the parent. 
* 
* 2. conversion from active to "basic local time". The timing model 
* allows for objects to repeat their basic duration multiple times, 
* and optionally to play backwards before repeating. */ 

さらに(プロパティのコメントから)

/* The rate of the layer. Used to scale parent time to local time, e.g. 
* if rate is 2, local time progresses twice as fast as parent time. 
* Defaults to 1. */ 

@property float speed; 

/* Additional offset in active local time. i.e. to convert from parent 
* time tp to active local time t: t = (tp - begin) * speed + offset. 
* One use of this is to "pause" a layer by setting `speed' to zero and 
* `offset' to a suitable value. Defaults to 0. */ 

@property CFTimeInterval timeOffset; 

だから、あなたの解釈が正しいと表示されます。

+0

これは私のための鍵だった:t =(tp - begin)* speed + offset。これを使用して、CACurrentMediaTime()からアニメーションの現地時間に時間を変換することができました。 –