Cocos2d iphone 如何实际暂停cocos2d计划选择器?

Cocos2d iphone 如何实际暂停cocos2d计划选择器?,cocos2d-iphone,Cocos2d Iphone,我知道以前可能有成千上万的人问过这个问题。但我的问题有点不同。我想知道是否有一种真正的方法来暂停已安排的选择器,而不仅仅是取消它。我需要知道这一点,因为每50秒就会调用一个选择器。如果我在剩下2秒的时间内取消对选择器的调度,然后重新调度它,那么函数调用该函数需要98秒 您可以暂停目标节点(在本例中为self)的所有选择器: [[CCScheduler sharedScheduler] pauseTarget:self]; 如果你不能使用它,你必须自己记录时间。在这种情况下,安排更新选择器可能是

我知道以前可能有成千上万的人问过这个问题。但我的问题有点不同。我想知道是否有一种真正的方法来暂停已安排的选择器,而不仅仅是取消它。我需要知道这一点,因为每50秒就会调用一个选择器。如果我在剩下2秒的时间内取消对选择器的调度,然后重新调度它,那么函数调用该函数需要98秒

您可以暂停目标节点(在本例中为self)的所有选择器:

[[CCScheduler sharedScheduler] pauseTarget:self];
如果你不能使用它,你必须自己记录时间。在这种情况下,安排更新选择器可能是最简单的:

[self scheduleUpdate];
然后编写更新方法:

-(void) update:(ccTime)delta
{
    totalTime += delta;
    if (isSelectorXPaused == YES)
    {
        nextUpdateForSelectorX += delta;
    }
    else if (totalTime > nextUpdateForSelectorX)
    {
        nextUpdateForSelectorX = totalTime + 50;
        [self performX];
    }
}
变量totalTime、isSelectorXPaused和nextUpdateForSelectorX是实例变量。如果名为X的选择器被暂停,它下次应该运行的时间只会提前经过的时间,本质上这会在选择器暂停时保持totalTime和nextUpdateForSelectorX之间的差值不变

如果选择器未暂停且更新到期,则nextUpdateForSelectorX将提前50秒,并使用常规消息发送执行选择器

这是基本原则,您应该能够扩展它以支持多个选择器。忽略了变量的初始化,实际上暂停了选择器。这不应该构成大问题