问题在于,当您调用第一个计划时,它会被成功调度。但接下来的立即通话是抛出警告的东西
CCScheduler#scheduleSelector. Selector already scheduled. Updating interval from: X.2 to X.2
你可以在日志中看到这个。
你可以做的是当选择器被调用时,在方法结束时你可以再次安排下一次,直到你完成。您可以通过一个计数器来跟踪它被调用的次数,将所有间隔放在一个数组中,然后安排下一个选择器在由计数器识别的特定索引处的间隔。像这样:
NSArray *intervals = [NSArray arrayWithObjects:[NSNumber numberWithFloat:0.7],[NSNumber numberWithFloat:1.7],[NSNumber numberWithFloat:3.7], nil];
int counter = 0;
//schedule it for the first time with object at index counter/index 0
[self scheduleOnce:@selector(displayWarningMessage) delay:[(NSNumber *)[intervals objectAtIndex:counter]] floatValue];
现在在你的选择,做这样的事情:
-(void)displayWarningMessage
{
//do all your stuff here
//increment counter
counter ++;
if(counter < [intervals count])
{
//schedule it for the next time with object at index counter/index
[self scheduleOnce:@selector(displayWarningMessage) delay:[(NSNumber *)[intervals objectAtIndex:counter]] floatValue];
}
}
intervals
和counter
应该是道高德班。
非常感谢你,是一个不错的主意,但我尝试过,并没有工作。作为一个证明,在代码中,你建议我将调用替换为scheduleOnce的调用,而不是所有控件下面的注释“在这里做所有的事情”,它仍然不会调用它。我不确定是否我做错了什么或者什么。我正在使用Cocos2d v2.0和ARC启用。现在对于你的想法+1投票,但我保持答案不被接受,因为没有完全解决问题(但会接受,如果没有别的出现)。 – mm24 2012-07-19 13:26:37