Cocos2d(iOS):在回调中调用的scheduleOnce不会触发

时间:2011-11-27 07:44:57

标签: ios cocos2d-iphone scheduler

我正在通过 scheduleOnce (Cocos 1.1b)安排回调,当执行回调并且在那里执行所有任务后,我尝试再次重新安排相同的回调(只是使用不同的回调)延迟)。理由是在回调之间实现不同的延迟。 但是,虽然第一次正确调用它,但第二次调度永远不会再次触发它。单步执行Cocos库,它最终会在列表中添加一个计时器,但它不会触发。 我知道我做错了什么,需要做些什么?

编辑:刚看到第二次调度日志中的这个条目:

CCScheduler#scheduleSelector. Selector already scheduled. Updating interval from: 0.00 to 0.00

我现在尝试首先明确地取消计划所有计时器,但它没有任何区别。我无论如何都希望 scheduleOnce 在回调时重置该计时器。

1 个答案:

答案 0 :(得分:2)

在您使用最新的测试版之后,它可能是Cocos2D中的一个错误。所以我不会透露,你可能想通过官方渠道报告这个(cocos2d论坛,cocos2d-iphone的谷歌代码问题)。

与此同时,你可以这样做:

-(id) init
{
  …
  [self scheduleSelector:@selector(repeat) interval:0];
}

-(void) repeat
{
  // simply schedule the selector again with a new interval
  [self scheduleSelector:@selector(repeat) interval:CCRANDOM_0_1()];
}

或者,如果您想稍后重新安排选择器,可以在repeat方法中按如下方式取消调度(_cmd是当前方法选择器的简写):

-(void) repeat
{
  [self unschedule:_cmd];
  // re-schedule repeat at a later time
}