2010-12-28 15 views
1

私はアニメーションを上下に連続して行う単純なオブジェクト(AnimateTopDown)を持っています。アニメートするいくつかのAnimateTopDownオブジェクトを持っていますが、すべてのオブジェクトアニメーション間に同期はありません。一般的にオブジェクト間の同期を維持する方法は?別々のアニメーションブロック間で同期する方法はありますか?アニメーションオブジェクト間の同期を維持していますか?

p.s.私はアニメーションオブジェクトのUIViewAnimationインターフェイスを使用しています。

答えて

0

// mSyncTimeを共有することができます/グローバル変数

-(NSTimeInterval) getStartDelay 
{ 
    NSTimeInterval delay; 

    NSTimeInterval oldTime = mSyncTime; 
    if(oldTime == 0) 
    { 
     mSyncTime = [NSDate timeIntervalSinceReferenceDate]; 
     oldTime = mSyncTime; 
    } 

    NSTimeInterval timeNow = [NSDate timeIntervalSinceReferenceDate]; 

    delay = timeNow - oldTime; 

    SLint delayInMiliSec = delay * 1000; 
    SLint animDuration = (DEFAULT_ANIM_SPPED*2) * 1000; 

    SLint timeElapsed = delayInMiliSec%animDuration; 
    delay = animDuration - timeElapsed; 

    delay = delay/1000.0; 

    if(oldTime == 0) 
     delay = 0; 

    return delay; 
} 

そして、私はsetAnimationDelayのAPIに遅延を設定しているアニメーション...それは私のために働い

[UIView setAnimationDelay:[self getStartDelay]]; 

を開始する前に...ハックは標準的な時間を維持しなければならず、アニメーションを開始する前にアニメーションをその基準時間に同期させる必要があります。

0

ここであなたが望むものを得るのはちょっと難しいです。どのような効果が得られ、どのような効果を達成したいのですか?

しかし、一般に、単一のUIViewアニメーションブロック(またはアニメーション化するために使用するメカニズム)を使用して、すべてのオブジェクトを同時に移動させることができます。別々のアニメーションブロックを与えることは、CPU時間のためにキューに入れられるので、一度に1つずつ実行することを意味します。

関連する問題