キャラクターが死亡したときにタッチイベントをキャンセルする際に発生しているこの問題について、誰か助けてください。画面のX軸に基づいて、キャラクターコントローラー(スプライトに触れて左右にドラッグして移動)があります。私のコントローラ クラスは CCNode のサブクラスであり、タッチを TouchDispatcher に登録するために必要なすべてのメソッドを備えています。ccTouchBegin、ccTouchMove、および ccTouchEnd は正常に動作しますが、ccTouchMove が動作していてキャラクターが死亡している間に、コントローラーをリセットしたいのですが、プレーヤーの位置を画面上の開始位置に設定しますが、指を離すまでトリガーされません (つまり、ccTouchEnd)トリガーすると、GameLayer(CCLayer) のリセット プレーヤー/コントローラーが起動します。
CCTouchCancel メソッドを追加することでうまくいくと思いましたが、起動していません。各 Touch イベント メソッドは、アクションを実行する前に、まずコントローラーの状態 (IDLE、ACTIVE、STOP) をチェックします。ドラッグを処理する update メソッドもありますが、プレイヤーがキャラクターをドラッグ/移動できるようにする前に、 controller.state == ACTIVE であることも確認します。
キャラクターが死亡したときの Gamelayer の update メソッドで、controller.state = STOP を設定しました。コントローラの STOP 状態の更新メソッド[[[CCDirector sharedDirector] touchDispatcher] removeDelegate: self];
で、メソッド内の同じコードを呼び出しますonExit
が、タッチ イベントがキャンセルされません。指を離した場合にのみタッチイベントが停止します。次に、Gamelayer で行われた状態変更が発生します
お知らせ下さい。