我知道之前可能有成千上万的人问过这个问题。但我的问题有点不同。我想知道是否有一种实际的方法可以暂停预定的选择器,而不仅仅是取消预定。我需要知道这一点,因为我每隔50秒就会调用一个选择器。如果我在2秒内取消预定选择器,然后重新安排它,那么该功能需要98秒才能调用该功能。
答案 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秒前进,并使用常规消息发送执行选择器。
这是基本原则,您应该能够扩展它以支持多个选择器。已经省略了变量的初始化,实际上暂停了选择器。它不应该成为一个大问题。