首页 > 代码库 > Cocos2dx 粒子销毁问题
Cocos2dx 粒子销毁问题
Cocos2dx 粒子销毁问题
DionysosLai(906391500@qq.com) 2014-7-3
之前在调试粒子特效时,在粒子编辑器有个选项是用来调整粒子的生命时间,当粒子存在的时间超过这个值时,粒子就会消失不见。自然而然,在使用粒子系统做特效事,将这个粒子的消失不见,当作了粒子的自动销毁功能。
后来在使用粒子在做泡沫特效时,每隔一段时间就需要产生一组泡沫。当游戏运行一段时间是,突然发现游戏变得有点儿卡顿。打开调试时,发现节点数目不停的增加,增加的速度和泡沫产生的速度一致。归结原因,这时由于粒子并不会自动销毁。因此,在使用粒子时,我们尽量要自己重写粒子系统,当粒子运行的时间超过其生命时,就要自动销毁了。具体的函数如下:getLife();
这里给出我使用的具体方法:
void SDMPartical::initData( const char *plistFile ) { m_pPartical = CCParticleSystemQuad::create(plistFile); m_pPartical->setPosition(CCPointZero);//设置发射粒子的位置 this->addChild(m_pPartical); this->scheduleOnce(schedule_selector(SDMPartical::deletePartical), m_pPartical->getLife()+1.f); } void SDMPartical::deletePartical( float delta ) { this->removeChild(m_pPartical, true); }
注意:在这里我在其生命数后1s才调用函数,移出这个粒子,这时由于我在调试时,发现当恰好在其生命结束时,就调用函数销毁,粒子消失的非常突兀。因此,加了1s缓冲时间。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。