从CCNode(不是onEnter)调用时,runAction不会被执行

时间:2013-09-12 19:52:03

标签: cocos2d-x

我有一个类,它是从我希望执行操作的方法之一扩展的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方法

1 个答案:

答案 0 :(得分:0)

在移植iOS cocos2d应用程序时,我在cocos2d-x上遇到了这个问题。 在“runAction”调用之后,添加以下代码行以检查暂停的目标是否是罪魁祸首:

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

就我而言,这就是为什么没有采取行动的原因。似乎CCTransitionFade(来自屏幕转换)导致暂停。这可能是由于在init期间完成节点的构建,尽管我还没有测试过这个理论。