首页 > 代码库 > cocos2dx --- Widget 加载 CCNode
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);
最初,我是直接 使用 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();
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。