如何从执行中暂停PerformSelector?

Cad*_*Loh 2 objective-c cocos2d-iphone

每当我暂停游戏时我都会遇到严重的问题,因为我的大部分时间performSelector:都有延迟,所以它不会立即执行,但如果我暂停游戏那么事情就会变坏然后performSelector仍在调用...我应该如何克服这个问题?

我知道有一个功能NSObject可以取消所有请求,但这并不是我正在寻找的,因为我希望该方法在玩家恢复游戏时继续执行.

iHu*_*ter 5

根据cocos2d最佳实践,您不应该performSelector:afterDelay直接使用,而是使用cocos2d调度程序:

  • 尽量不要使用Cocoa的NSTimer.而是使用cocos2d自己的调度程序.
  • 如果您使用cocos2d调度程序,您将拥有:
    • 自动暂停/恢复.
    • 当CCLayer(CCScene,CCSprite,CCNode)进入舞台时,定时器将自动激活,当它离开舞台时,它将自动停用.
    • 将使用增量时间调用目标/选择器

以下是您安排方法的方法(假设自己是a CCNode):

[self schedule: @selector(tick2:) interval:0.5];
Run Code Online (Sandbox Code Playgroud)

-tick2:如果您想要调用一次,请不要忘记取消计划.