cocos2dx --- Widget 加载 CCNode

来源:互联网 发布:centos和redhat哪个好 编辑:程序博客网 时间:2024/05/18 02:32

如题。


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

现在我要加载一个粒子特效进去,下图:

Widget* layout =  dynamic_cast<Widget*>(pRoomWidget[roomId]->getChildByTag(10));CCParticleSystemQuad* particle = CCParticleSystemQuad::create("particleTexture.plist");particle->setPosition(CCPointZero);layout->addChild(particle);



最初,我是直接 使用 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);}



后来换成 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);

删除时使用   

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


同样,删除时需注意改为 

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



1 0
原创粉丝点击