Cocos2dのCCNodeクラスで現在実行されているアクションがあるかどうかチェックできますか? CCMoveBy
がまだ実行中であるかどうかを知りたいです。アクションが現在実行中であることを確認しますか?
答えて
あなたは常にメソッドが終了したときを示すためにメソッドを追加し、それが動作していないことを示すためにそのようないくつかのBOOLか何かを切り替えて、それが開始を示すためにBOOLを切り替えるには、startメソッドを置くことができます。
-(void) spriteMoveStarted:(id)sender {
ccMoveByIsRunning = YES;
}
と:つの@selector方法でhere.
から変更
id actionMove = [CCMoveTo actionWithDuration:actualDuration
position:ccp(-target.contentSize.width/2, actualY)];
id actionMoveDone = [CCCallFuncN actionWithTarget:self
selector:@selector(spriteMoveFinished:)];
id actionMoveStarted = [CCCallFuncN actionWithTarget:self
selector:@selector(spriteMoveStarted:)];
[target runAction:[CCSequence actions:actionMoveStarted, actionMove, actionMoveDone, nil]];
-(void) spriteMoveFinished:(id)sender {
ccMoveByIsRunning = NO;
}
ここで、ccmoveByIsRunningは私が参照しているBOOLです。
EDIT:xusが指摘しているとおり、実際にはこれを実行せず、代わりに[self numberOfRunningActions]
を使用する必要があります。
いずれのCCNodeでも[self numberOfRunningActions]
を使用できます。あなたのケースでは、単純に実行中のアクションがあるかどうかを知りたいと思うように聞こえるので、あらかじめ正確な数を知ることは大したことではありません。
特定のアクションがgetActionByTag方法とaction.tagプロパティを使用して実行する場合我々は簡単に確認することができます。 CCCallFuncNコールバックまたはカウントnumberOfRunningActionsを導入する必要はありません。
例。
私たちのアプリでは、別のジャンプを実行する前にjumpActionを終了させることが重要です。次のようにコードのクリティカルジャンプ部が保護されて既に実行中のジャンプアクション 間に別のジャンプをトリガ防止するために、(以下コメントとして)
#define JUMP_ACTION_TAG 1001
-(void)jump {
// check if the action with tag JUMP_ACTION_TAG is running:
CCAction *action = [sprite getActionByTag:JUMP_ACTION_TAG];
if(!action) // if action is not running execute the section below:
{
// create jumpAction:
CCJumpBy *jumpAction = [CCJumpBy actionWithDuration:jumpDuration position:ccp(0,0) height:jumpHeight jumps:1];
// assign tag JUMP_ACTION_TAG to the jumpAction:
jumpAction.tag = JUMP_ACTION_TAG;
[sprite runAction:jumpAction]; // run the action
}
}
アクションが実行されているかどうかを確認するこの方法はありがとうございます。何千ものコード行の私のアプリケーションは、コード内のメソッドによって最終的に修正された1つの大規模な不具合を持っていました。ありがとうございました。 –
- 1. Docker DBが実行中であることを確認する
- 2. CloudKitデータベース操作が実行中であることの確認
- 3. .pkgをインストールする:更新中のアプリケーションが現在実行中かどうかを確認しますか?
- 4. ユーザーがアクションを実行できることを確認してください
- 5. タスクを実行してタスクが実行中であることを確認する
- 6. 文字列が現在の日付であることを確認する
- 7. 現在実行中のTFSビルドのログを確認するには?
- 8. Android - オーディオが現在再生中であるかどうかを確認して停止します
- 9. Processクラスを使用してコンソールアプリケーションがまだ実行中であることを確認する
- 10. 現在のURLがブラウザにあることを確認してください
- 11. 特定のウィンドウが現在移動中であるかどうかを確認します
- 12. ウィンドウが現在のデスクトップにあるかどうかを確認しますか?
- 13. PhoneGap.execサービスが存在することを確認しますか?
- 14. アスタリスクが現在再生中の音楽ファイルを確認する
- 15. Win32スレッドが実行中であるか、サスペンド状態であるかを確認します。
- 16. 現在データベースにある移行(バージョン)を確認する方法ですか?
- 17. ユーザーがローミング中であることを確認する
- 18. 現在の時刻とタイムスタンプの差が24時間未満であることを確認します
- 19. 実行中のBazelアクションのニーモニックを確認する方法はありますか?
- 20. UPDATEクエリの実行中に値が存在することを確認してください
- 21. Smack + openfire - 現在のユーザーが管理者であるかどうかを確認できますか? /現在のユーザーの詳細を確認するには?
- 22. 現在の行を確認するデータ行です
- 23. NSMutableDictionaryが空であることを確認しますか?
- 24. オブジェクトがカスタムクラスであることを確認しますか?
- 25. tabControl1がnullであることを確認しますか?
- 26. Sympy ExpressionがNanであることを確認しますか?
- 27. 現在実行中のクエリを確認するためにJDBCドライバとインターフェイスすることはできますか?
- 28. Firefoxが現在実行中にヘッドレスモードで実行されているかどうかを確認するにはどうすればよいですか?
- 29. アクションがコハナに存在するかどうかを確認します
- 30. 実行中のプロセスを確認する -
これは醜いハックで、[自己numberOfRunningActions]は使用されるべきである – xus
@xus : いい視点ね。私の悪い、彼はすでにそれを受け入れたので、私は答えを削除することはできませんが、私は間違いを指摘している! – Dair