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

时间:2011-11-28 02:44:21

标签: ios core-animation

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

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

2 个答案:

答案 0 :(得分:6)

对于CAEmitterCell' 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的颜色属性。 UIColorCGColorCreate都将其值限制为最大值1.0。无论出于何种原因,CGColorCreateCopyWithAlpha都没有。

答案 1 :(得分:1)

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

  

名   单元格的名称。

     

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

     

例如,使用一个关键路径(例如emitterCells.myCellName.redRange)将动画添加到单元格的封闭图层中,可以使用名称myCellName为图层的emitterCells数组中的单元格的redRange属性设置动画。

     

状况   适用于Mac OS X v10.6及更高版本。   宣告进入   CAEmitterCell.h

我收集你仍然将动画添加到图层,但是使用引用该图层一部分的关键路径 - 在这种情况下是单元格的属性。是否为细胞暴露了alpha属性?