如何实际暂停cocos2d预定选择器?

时间:2011-12-16 18:11:21

标签: cocos2d-iphone

我知道之前可能有成千上万的人问过这个问题。但我的问题有点不同。我想知道是否有一种实际的方法可以暂停预定的选择器,而不仅仅是取消预定。我需要知道这一点,因为我每隔50秒就会调用一个选择器。如果我在2秒内取消预定选择器,然后重新安排它,那么该功能需要98秒才能调用该功能。

1 个答案:

答案 0 :(得分:0)

您可以执行此操作以暂停节点的所有选择器(目标,在本例中为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秒前进,并使用常规消息发送执行选择器。

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