как на самом деле приостановить выбор расписания Cocos2d? - PullRequest
0 голосов
/ 16 декабря 2011

Я знаю, что, наверное, тысячи людей спрашивали об этом раньше.Но мой вопрос немного другой.Мне интересно, есть ли реальный способ приостановить запланированный селектор, а не просто отменить его.Мне нужно знать это, потому что у меня есть селектор, который вызывается каждые 50 секунд.если бы я отменил планирование этого селектора с оставшимися 2 секундами, а затем перепланировал его, то для вызова функции потребовалось бы 98 секунд.

1 Ответ

0 голосов
/ 17 декабря 2011

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

Это основной принцип, вы должны иметь возможность расширить его для поддержки несколькихселекторы.Инициализация переменных была исключена, так как фактически остановила селектор.Это не должно создавать больших проблем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...