cocos2dx --- Widget 载入中 CCNode

如果说。

Widget addChild()   与 addNode()  两个方法。

如今我要载入一个粒子特效进去,下图:

Widget* layout =  dynamic_cast<Widget*>(pRoomWidget[roomId]->getChildByTag(10));

CCParticleSystemQuad* particle = CCParticleSystemQuad::create("particleTexture.plist");
particle->setPosition(CCPointZero);
layout->addChild(particle);

cocos2dx --- Widget 载入中 CCNode

最初。我是直接 使用 layout->addChild(particle);         Log中有一个断言失败的错误:下图是错误位置

void Widget::addChild(CCNode* child, int zOrder, int tag)
{
CCAssert(dynamic_cast<Widget*>(child) != NULL, "Widget only supports Widgets as children");
CCNode::addChild(child, zOrder, tag);
_widgetChildren->addObject(child);
}

cocos2dx --- Widget 载入中 CCNode

后来换成 layout->addNode(particle);

载入成功,没有断言失败。但在删除掉的时候出错。。。

解决方法有两种:

1、使用addChild()载入。但中间须要间隔一层Widget,如图:

<span style="white-space:pre">	</span>CCParticleSystemQuad* particle = CCParticleSystemQuad::create("particleTexture.plist");
particle->setPosition(CCPointZero);
Widget* pNode = Widget::create();
pNode->setPosition(CCPointZero);
pNode->addNode(particle);
layout->addChild(pNode);

cocos2dx --- Widget 载入中 CCNode

删除时使用 cocos2dx --- Widget 载入中 CCNode

<span style="white-space:pre">	</span>layout->removeAllChildren();

2、使用addNode()载入

<span style="white-space:pre">	</span>CCParticleSystemQuad* particle = CCParticleSystemQuad::create("particleTexture.plist");
particle->setPosition(CCPointZero);
layout->addNode(particle);

cocos2dx --- Widget 载入中 CCNode相同,删除时需注意改为cocos2dx --- Widget 载入中 CCNode

<span style="white-space:pre">	</span> layout->removeAllNodes();

版权声明:本文博主原创文章,博客,未经同意不得转载。

上一篇:php 站内搜索 多表 分页


下一篇:【C语言】整型在内存中的存储