【问题标题】:Particles in cocos2d-x flicker when setPosition is changed更改 setPosition 时 cocos2d-x 中的粒子闪烁
【发布时间】:2012-06-16 14:26:39
【问题描述】:

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    相关帖子:

    我刚刚遇到了同样的问题,我花了一段时间才找到问题的根源,>这是低调:不要使用

    [自我调度:@selector(NextFrame:)];

    改为使用

    [自调度更新];

    并重命名 NextFrame: 以更新:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-30
      • 1970-01-01
      • 2017-11-11
      相关资源
      最近更新 更多