0

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

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

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

我试图接触到所有的孩子,所以我可以做一个像“嘿,将所有对象淡化到这个值”这样的功能,因为它们在扩展 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 的元素但是......同样的问题仍然存在。

谁能帮我这个?

4

1 回答 1

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);
    }
}

}

于 2013-06-19T12:10:34.243 回答