这里的问题是,当您调用第一个计划时,它已成功计划。但是下一个立即调用是发出警告
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
ivars。