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 回答