更改setPosition时,cocos2d-x中的粒子会闪烁

时间:2012-06-16 14:26:39

标签: c++ cocos2d-iphone cocos2d-x particles

我正在使用一个粒子,略微修改的CCParticleFlower与positionVar从上到下呈垂直线形式。在CCNode更新中,我不断地在整个屏幕上从左到右改变粒子的位置,当它到达右侧时,我将x设置为0并开始向右滚动。

问题是当我将X值重置为0时,所有粒子都会闪烁,它们会消失大约一帧并出现在下一帧中,这会导致令人讨厌的闪烁效果。

当我用小数字增加X值但是当粒子位置被重置到它的起始位置时它不会发生,它在win32,android和ios上闪烁。我正在使用最新的1.1版本(主分支)

1 个答案:

答案 0 :(得分:1)

我最近遇到了类似的问题,即当父母改变方向时粒子会跳来跳去。我不确定它是否完全是同一个问题,但这是我找到的帮助我解决问题的主题:

http://www.cocos2d-iphone.org/forum/topic/17167

相关帖子:

  

我刚遇到同样的问题,我花了一段时间才到达底部,>这里是低位:不要用

     

[自我安排:@selector(NextFrame:)];

     

相反,请使用

     

[self scheduleUpdate];

     

并重命名NextFrame:更新:

     

使用自定义选择器会在CCScheduler队列的最末端安排更新,换句话说,它将导致在粒子系统的update:方法之后调用NextFrame:方法,因为粒子系统会调度自己的更新方法优先级为1。   这不好,因为使用发射器的当前位置更新粒子的四边形位置,然后在NextFrame:方法中移动发射器,这会导致所有粒子再次移动,因为发射器的位置实际上是绘制粒子的CCNode的位置。   通过使用scheduleUpdate,您确实安排了更新:优先级为0的方法,这意味着它将在粒子系统的update:方法之前被调用,并且一切都会很好。

所以基本上,为你的类添加一个更新方法并调用scheduleUpdate而不是手动安排它。