如何让CAEmitterCell在其生命周期结束时淡出?

Jef*_*eff 15 core-animation ios

我正在制作一些粒子,而不是在他们一生的最后消失,我希望它们淡出.

我有一个CAEmitterCell生命周期为35.0 的定义.我不希望粒子在粒子寿命的整个持续时间内淡出.我只想让它在最后淡出.也许最后2或3秒.

小智 6

对于CAEmitterCell's color属性,将alpha值设置为lifetime * alphaSpeed(其中alphaSpeed为-1.0/fadeOutDuration).

因此,对于35.0的生命周期和2.0的fadeOutDuration,alphaSpeed将为-0.5,而alpha将为17.5.

有一些警告:

  1. 这仅适用于您的单元格应该以完全alpha开始的情况.
  2. 您必须CAEmitterCell使用CGColorRef创建的设置颜色属性CGColorCreateCopyWithAlpha.二者UIColor并CGColorCreate夹住它们的值到最大值的1.0.无论出于何种原因,CGColorCreateCopyWithAlpha都没有.


Har*_*ngh 1

刚刚在文档中发现了这一点,它可能指向正确的方向:

\n
\n

名称\n单元格的名称。

\n

@property(copy) NSString *name\n讨论\n构建引用单元格的动画关键路径时使用单元格名称。默认为零。

\n

例如,使用诸如emitterCells.myCellName.redRange之类的键路径将动画添加到cell\xe2\x80\x99s封闭层将会对layer\xe2\x80\x99s中的cell的redRange属性进行动画处理,其名称为emitterCells数组我的细胞名称。

\n

可用性\n适用于 Mac OS X v10.6 及更高版本。\n在\nCAEmitterCell.h 中声明

\n
\n

我认为您仍然将动画添加到图层中,但有一个引用该图层一部分的关键路径 - 在本例中为单元格的属性。细胞是否有暴露的 alpha 属性?

\n