我有一个简单的对象(AnimateTopDown),可以连续动画上下,我有几个动画的AnimateTopDown对象,但所有对象动画之间没有同步。一般来说如何保持对象之间的同步?有没有办法在不同的动画块之间进行同步?
P.S。我正在使用UIViewAnimation接口来设置动画对象。
答案 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]];
它对我有用......黑客是我们必须保持标准时间,在开始任何动画之前我们需要将动画同步到参考时间。