CAEmitterCell访问所有粒子

时间:2013-05-23 21:49:04

标签: ios caemitterlayer caemittercell

我有一个CAEmitterCell工作,但我希望粒子减速并停止。似乎我可以访问所有粒子然后我可以将它们的速度和/或加速度降低到0并且它们将停止移动。

我试过这样的事情:

NSArray *cells = [_layerEmitter emitterCells];
    for (CAEmitterCell* cell in cells) {
        ...

但这不起作用,因为我的layerEmitter只有一个emitterCell,我不需要emitterCell,而是它已经创建的粒子。

我没有在文档中看到这一点,这让我相信我有一个概念性的问题。我感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

不幸的是,粒子只存在于窗口服务器中,这与您的应用程序完全独立。 (从iOS 6.0开始,它被称为backboardd。)您可以通过在发射器运行时在调试器中暂停应用程序来推断这一点。即使您的应用程序停止,粒子也会继续产生并在模拟器或设备上移动。因此,您无法访问单个粒子。

如果你的发射器单元的velocityRangeemissionRange都是零(意味着粒子的速度矢量没有随机性),那么你应该能够通过玩{{来使粒子减速单元格的1}},xAccelerationyAcceleration属性。但是,粒子将减速停止然后反向。如果您希望粒子在停止时消失,请相应地设置zAcceleration属性。