如何在Cocos2D-iPhone中暂停/恢复CCParticleSystem?

时间:2011-11-03 15:12:23

标签: iphone cocos2d-iphone particle-system

我目前正在使用Cocos2D进行游戏,我需要暂停/恢复一些粒子系统才能进行优化。

我该怎么做?

我知道我可以使用[particleSystem unscheduleUpdate]和[particleSystem scheduleUpdate],但是如何检查是否已安排更新?

我想暂停屏幕外的所有粒子系统,并在它们返回视野时恢复它们,所以当我移动视口时,我正在遍历粒子系统。

particleSystem.active似乎没有给我所需的标志来检查系统是否正在更新......

我在这里缺少什么?

2 个答案:

答案 0 :(得分:4)

您不应安排或取消安排粒子系统的更新方法或任何其他内部类。问题在于可能有其他预定的方法(即按优先级或间隔安排)然后继续运行。

相反,您应该使用CCScheduler类的pauseTarget和resumeTarget暂停/恢复类实例的更新:

[[CCScheduler sharedScheduler] pauseTarget:particleSystem];
[[CCScheduler sharedScheduler] resumeTarget:particleSystem];

这将暂停/恢复所有预定的方法,而不仅仅是常规更新方法。

您还可以检查目标的预定方法是否已暂停:

[[CCScheduler sharedScheduler] isTargetPaused:particleSystem];

答案 1 :(得分:1)

我使用的另一个技巧是setEmissionRate()函数。 暂停粒子系统:

  

setEmissionRate(0);

恢复粒子系统:

  

setEmissionRate(latestValue);

我希望这对你有好处:)