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

Particles in cocos2d-x flicker when setPosition is changed

本文关键字:setPosition 闪烁 粒子 cocos2d-x      更新时间:2023-10-16

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

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

当我将 X 值增加小数字时不会发生这种情况,但是当粒子位置重置为其起始位置时,它会在 win32、android 和 iOS 上闪烁。我使用的是最新的 1.1 版本(主分支)

我最近遇到了一个类似的问题,每当它们的父粒子改变方向时,粒子就会跳来跳去。 我不确定这是否是完全相同的问题,但这是我发现有助于解决我问题的线程:

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

相关帖子:

刚刚遇到了同样的问题,我花了一段时间才弄清楚它,>这是低谷:不要使用

[自我时间表:@selector(下一帧:)];

相反,请使用

[自行计划更新];

并重命名下一帧:以更新:

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

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