2011-12-16 50 views
0

我知道有可能是成千上万的人谁问过这一点。但是我的问题有点不同。我想知道是否有一种实际的方法来暂停预定的选择器,而不是仅仅调度它。我需要知道这一点,因为我有一个选择器每50秒调用一次。如果我是取消调度与左2秒该选择器,然后重新安排它,则该函数将采取98秒调用的函数。如何实际暂停计划选择一个cocos2d的?

回答

0

为此,您可以暂停所有选择的节点(目标,在这种情况下个体经营):

[[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秒到未来和使用常规消息发送进行选择。

这是基本原则,你应该能够扩展,以支持多个选择。变量的初始化已被排除,因为实际上正在暂停选择器。它不应该成为一个大问题。