Как приостановить PerformSelector от выполнения? - PullRequest
2 голосов
/ 27 декабря 2011

У меня возникают серьезные проблемы, когда я ставлю игру на паузу, так как большая часть моих performSelector: имеет задержку, поэтому она не запускается сразу, но если я приостанавливаю игру, все становится плохо, тогда performSelector остается зовет ... Как мне это преодолеть?

Я знаю, что в NSObject есть одна функция для отмены всех запросов, но это не совсем то, что я ищу, потому что я хочу, чтобы метод продолжал выполняться, если игрок возобновит игру.

1 Ответ

5 голосов
/ 27 декабря 2011

Согласно Cocos2d Best Practices вы не должны использовать performSelector:afterDelay напрямую, а вместо этого использовать планировщик cocos2d:

  • Попробуйте НЕ для использованияNSTimer какао.Вместо этого используйте собственный планировщик cocos2d.
  • Если вы используете планировщик cocos2d, у вас будет:
    • автоматическая пауза / возобновление.
    • при входе в CCLayer (CCScene, CCSprite, CCNode)на этапе таймер будет активирован автоматически, а когда он покинет сцену, он будет автоматически деактивирован.
    • Ваша цель / селектор будет вызван с дельта-временем

Вот как вы планируете свой метод (при условии, что self - это CCNode):

[self schedule: @selector(tick2:) interval:0.5];

Не забудьте отменить планирование в -tick2:, если вы хотите вызвать его один раз.

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