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



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值