2

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

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

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

4

1 回答 1

1

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

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

相关帖子:

我刚刚遇到了同样的问题,我花了一段时间才找到它的底部,>这是低点:不要使用

[自我计划:@selector(NextFrame:)];

相反,使用

[自我时间表更新];

并重命名 NextFrame: 以更新:

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

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

于 2013-01-09T21:51:07.207 回答