使用NSTimer时提高速度

时间:2012-04-06 16:26:01

标签: iphone animation nstimer

我创建了一个动画游戏应用程序,其中我使用NSTimer在特定时间间隔后移动图像。

timer = [NSTimer scheduledTimerWithTImerInterval:0.2 target:self selector:@selector(MoveVirus) userinfo:nil repeats:YES];

此计时器调用MoveVirus函数,MoverVirus移动病毒(屏幕上的图像)。

它在开始时工作正常但运动速度自动增加。 增加的运动速度破坏了每一个进一步的逻辑。

我不知道它有什么问题?

请帮助解决这个问题。

1 个答案:

答案 0 :(得分:2)

NSTimer不一定用于此类用途......来自NSTimer的文档:

  

计时器不是实时机制;它只在其中一个发射时发射   已添加计时器的运行循环模式正在运行且能够运行   检查计时器的开火时间是否已经过去。因为各种各样   输入源一个典型的运行循环管理,有效的分辨率   计时器的时间间隔限制在50-100的量级   毫秒。如果在运行循环进入时发生计时器的触发时间   一个不监视计时器或长时间标注的模式   在下次运行循环检查计时器之前,计时器不会触发。   因此,计时器可能发射的实际时间可能是   在计划的射击时间之后很长一段时间。

更好的方法是,如果要移动UIImageView中包含的UIImage,将使用UIView上的类动画方法。如果使用包含延迟的动画方法,您仍然可以在特定时间后获得相同的移动图像结果。方法是:

+ (void)animateWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay options:(UIViewAnimationOptions)options animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion

使用此方法,您可以指定动画的时间(动画移动UIImages所需的时间),开始播放动画前等待的时间,动画选项的设定,动画代码块,以及动画完成时执行的块。