Iphone 在Xcode中加速NSTimer

Iphone 在Xcode中加速NSTimer,iphone,objective-c,cocoa,nstimer,Iphone,Objective C,Cocoa,Nstimer,我当时正在开发我的小应用程序MetoRidersTorm。这是一个非常简单的游戏,有些墙需要每秒向下移动。现在比赛需要更加艰难,墙需要更快倒塌。我该怎么做?我能做一个浮子,用它来控制NSTimer吗 顺便说一句,这款游戏是为iPhone设计的,但我不知道这是否重要。我对iPhone和iPad编程非常陌生,所以我还不太了解 谢谢-弗雷德里克·维特嗯。如果需要更改速度,请执行以下操作: //This is the way you make a timer. Where @selector(meth:

我当时正在开发我的小应用程序MetoRidersTorm。这是一个非常简单的游戏,有些墙需要每秒向下移动。现在比赛需要更加艰难,墙需要更快倒塌。我该怎么做?我能做一个浮子,用它来控制NSTimer吗

顺便说一句,这款游戏是为iPhone设计的,但我不知道这是否重要。我对iPhone和iPad编程非常陌生,所以我还不太了解


谢谢-弗雷德里克·维特

嗯。如果需要更改速度,请执行以下操作:

//This is the way you make a timer. Where @selector(meth:) is the method you want to
//call and interval is the amount of time for each call. Decrease x to speed up the
//timer.
[self schedule: @selector(yourMethod:) interval:x];

//This is the method your timer will call.
-(void) yourMethod: (ccTime) dt
{
    //Do stuff in here
}

这是Cocos2d的方式,因为您说过您正在使用Cocos2d。

如果我要重新表述您的问题,我会这样说。我有一组墙,每面墙需要有一个基于难度的速度。在给定的时间,每面墙的位置都需要根据其速度进行更新

一般来说,您不希望更改此更新发生的时间,因为运动可能会开始看起来起伏,比如帧速率。如果你看一看《学习iPhone和iPad cocos2d游戏开发》一书,Steffen Itterheim甚至建议始终假设恒定的帧速率。理由是,在正常的游戏中,你真的想要一个恒定的帧速率。在帧速率可能下降的情况下(例如,收到一封电子邮件,iPhone必须进行额外处理),您不希望任何移动跳得太远。这就是说,在这么短的时间内,事情进展缓慢,然后恢复到中断前用户所在的位置会更好

因此,与其更改NSTimer的间隔,不如更改移动的距离。设置一个变量以保持墙的速度。设置一个正常值的计时器(1/60是一个不错的选择)。然后在计时器的回调中,根据速度更新墙的位置


当然,这只是如果你正在运行自己的游戏引擎。如果您使用的是cocos2d,那么您应该真正使用CCDirector的调度程序,因为当控制器暂停/恢复时,使用您自己的NSTimer会导致问题,等等。。。如果你不使用cocos2d,我建议你研究一下,因为它会帮你解决这类问题。

如果你坚持“加速”计时器,我在查找它时发现唯一的方法就是使它失效并创建一个新的计时器,别想还有其他方法。。。您唯一可以更改的是使用该属性触发计时器的时间,但这不会更改计时器触发之间的间隔,我认为它只表示计时器第一次触发或将触发。

您是否使用iphone的cocos2d?看看我之前说过的CCSchedulerAs,我是xcode和iPhone编程的noob。你能给我举个例子吗?感谢xDNSTimer由NSTIMERVAL控制,它实际上是一个双精度值。因此,你将能够分配几乎任何一秒的分数(数学上不是绝对精确的,但足够接近你的项目)。好的,我想我理解你。我需要说double myValue=1;在调用计时器的事件中:addScore=[NSTimer scheduledTimerWithTimeInterval:myValue目标:self selector:@selector(addScoreVoid)userInfo:nil repeats:NO]我是否正确?double MyInterValveValue=0.01更像;)