我有一个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的元素但是......同样的问题仍然存在。
任何人都可以帮我吗?
答案 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);
}
}
}