Вы можете сделать это, чтобы приостановить все селекторы для узла (цели, в данном случае 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 секунд в будущее, и селектор выполняется с помощью обычной отправки сообщения.
Это основной принцип, вы должны иметь возможность расширить его для поддержки несколькихселекторы.Инициализация переменных была исключена, так как фактически остановила селектор.Это не должно создавать больших проблем.