2011-12-27 15 views
2

performSelector:のほとんどが遅れているので、ゲームを一時停止すると重大な問題が発生します。すぐに実行されませんが、ゲームを一時停止すると状況が悪くなります。performSelectorはまだ呼び出し中です...私はこれを克服すべきでしょうか?実行からPerformSelectorを一時停止する方法は?

NSObjectの下に1つの機能があることは知っていますが、すべてのリクエストを取り消すことはできますが、プレイヤーがゲームを再開した場合にメソッドを実行したいからです。

答えて

5

cocos2d Best Practicesによると、あなたはを直接使用する代わりに、cocos2dスケジューラを使用しないでください。

  • は、CocoaのNSTimerを使用しないを試してみてください。代わりにcocos2dのスケジューラを使用してください。
  • あなたはcocos2dスケジューラを使用する場合は、必要があります:
    • オートポーズ/再開を。
    • CCLayer(CCScene、CCSprite、CCNode)がステージに入ると、タイマーは自動的にアクティブになり、ステージを離れると自動的に非アクティブになります。
    • あなたのターゲット/セレクタは

デルタ時間で呼び出されますがここでは、(自己CCNodeであると仮定して)あなたの方法をスケジュールする方法は次のとおりです。

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

忘れてはいけませんそれを一度呼びたい場合は-tick2:でスケジュールを解除してください。

関連する問題