1

私はアクションを実行したいメソッドの1つから拡張されたCCNodeであるクラスを持っていますが、どれも実行していません:このクラスから:

class GameController : public CCNode

私もこれを持っています:

void GameController::onEnter()
{
    CCNode::onEnter();
}

これは私が持っているコードです:

bool GameController::removeFinalGems(CCArray* gemsToRemove)
{

    onGemScaleInAnim = CCCallFuncND::create(this,
                                                 callfuncND_selector(GameController::OnGemScaleInAnim),gemsToRemove); 

     onRemoveGemScaleInAnim = CCCallFuncND::create(this,
                                                 callfuncND_selector(GameController::OnRemoveGemScaleInAnim),gemsToRemove); 

    CCSequence* selectedGemScaleInAndRemove = CCSequence::create(onGemScaleInAnim,
                                                                onRemoveGemScaleInAnim, 
                                                                    NULL);

    bool b = this->isRunning();
    CCAction *action = this->runAction(selectedGemScaleInAndRemove);


    return true;
}

void GameController::OnGemScaleInAnim(CCNode* sender,void* data)
{


    CCArray *gemsToRemove = (CCArray*) data; 



}

void GameController::OnRemoveGemScaleInAnim(CCNode* sender,void* data)
{


    CCArray *gemsToRemove = (CCArray*) data; 

}

また、前と後に実行されているアクションがあるかどうかを確認するチェックを追加しました。その外観は、0 に等しい前と 1 に等しい後です。

int na = this->numberOfRunningActions();  //equal 0 
CCAction *action = this->runAction(selectedGemScaleInAndRemove);
int na0 = this->numberOfRunningActions();//equal 1 so there is action

OnRemoveGemScaleInAnim および OnGemScaleInAnim メソッドに到達することはありません

4

1 に答える 1

0

iOS の cocos2d アプリを移植するときに cocos2d-x でこの問題に遭遇しました。「runAction」呼び出しの後に、次のコード行を追加して、一時停止したターゲットが原因であるかどうかを確認します。

    CCDirector::sharedDirector()->getActionManager()->resumeTarget( this );

私の場合、これがアクションが実行されなかった理由です。CCTransitionFade の (画面遷移による) 一時停止が発生したようです。私はその理論をテストしていませんが、初期化中に行われたノードの構築が原因である可能性があります。

于 2013-10-08T23:51:55.447 に答える