cocos2d-x:我有一个EXC_BAD_ACCESS

时间:2013-06-14 22:29:47

标签: c++ cocos2d-x

我有一个EXC_BAD_ACCESS(代码= 1 ...)有时代码= 2使用cocos2d-x。 例如,当我这样做时出现此错误:

std::cout << this->getChildrenCount() << std::endl;
std::cout << this->getChildrenCount() << std::endl;

在这个确切的代码上,第一行有效但第二行给出了错误。

我试图联系所有的孩子,所以我可以做一个类似&#34;嘿,将所有对象淡化到这个值的功能&#34;,因为他们在扩展CCNode的类中。

void BasicElement::fadeTo(int opacity, float duration)
{
    CCActionInterval* actionTo = CCFadeTo::create(duration, opacity);
    CCArray* pChildren = this->getChildren();
    if (pChildren && pChildren->count() > 0)
    {
        CCObject* pObject = NULL;
        CCARRAY_FOREACH(pChildren, pObject)
        {
            CCSprite* pChild = (CCSprite*) pObject;
            pChild->stopAllActions();
            pChild->runAction(actionTo);
        }
    }
}

我已经尝试过自己的CCArray添加addChild的元素但是......同样的问题仍然存在。

任何人都可以帮我吗?

1 个答案:

答案 0 :(得分:0)

您不能在多个精灵上使用相同的CCAction。对于每个精灵,你应该创建新的动作。所以你应该在循环中创建动作。

void BasicElement::fadeTo(int opacity, float duration){

CCArray* pChildren = this->getChildren();
if (pChildren && pChildren->count() > 0)
{
    CCObject* pObject = NULL;
    CCARRAY_FOREACH(pChildren, pObject)
    {
        CCSprite* pChild = (CCSprite*) pObject;
        pChild->stopAllActions();

        //Create the action here
        CCActionInterval* actionTo = CCFadeTo::create(duration, opacity);

        pChild->runAction(actionTo);
    }
}

}