2011-09-04 13 views

答えて

1

あなたは常にメソッドが終了したときを示すためにメソッドを追加し、それが動作していないことを示すためにそのようないくつかの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]を使用する必要があります。

+0

これは醜いハックで、[自己numberOfRunningActions]は使用されるべきである – xus

+0

@xus : いい視点ね。私の悪い、彼はすでにそれを受け入れたので、私は答えを削除することはできませんが、私は間違いを指摘している! – Dair

6

いずれのCCNodeでも[self numberOfRunningActions]を使用できます。あなたのケースでは、単純に実行中のアクションがあるかどうかを知りたいと思うように聞こえるので、あらかじめ正確な数を知ることは大したことではありません。

5

特定のアクションが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 
    } 
} 
+0

アクションが実行されているかどうかを確認するこの方法はありがとうございます。何千ものコード行の私のアプリケーションは、コード内のメソッドによって最終的に修正された1つの大規模な不具合を持っていました。ありがとうございました。 –

関連する問題