维持动画对象之间的同步?

时间:2010-12-28 04:26:43

标签: iphone objective-c cocoa-touch

我有一个简单的对象(AnimateTopDown),可以连续动画上下,我有几个动画的AnimateTopDown对象,但所有对象动画之间没有同步。一般来说如何保持对象之间的同步?有没有办法在不同的动画块之间进行同步?

P.S。我正在使用UIViewAnimation接口来设置动画对象。

2 个答案:

答案 0 :(得分:0)

在这里很难得到你想要的东西。你得到了什么样的效果,你想达到什么样的效果?

但一般情况下,您可以使用单个UIView动画块(或用于动画的任何机制)移动所有对象,使它们同时移动。为它们提供单独的动画块意味着它们会在排队等待CPU时间时一次执行一个。

答案 1 :(得分: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]];

它对我有用......黑客是我们必须保持标准时间,在开始任何动画之前我们需要将动画同步到参考时间。