[核心动画]您对CAEmitterLayer有什么了解?
CAEmitterLayer是一种高性能的粒子引擎,旨在创建诸如火,雨,烟,雪等的粒子动画。
CAEmitterLayer是用于定义粒子效果的CAEmitterCell实例集合的容器。 您可以创建一个或多个CAEmitterCell对象作为模板 对于不同的粒子类型。 CAEmitterLayer负责根据这些模板实例化粒子流。
发射极层和电池特性如何?
CAEmitterLayer属性
CAEmitterLayer的属性控制粒子系统的位置和形状。 在birthRate
上指定的属性诸如birthRate
, lifetime
和velocity
重复值。 它们作为乘数工作。 您可以使用单个值来加快或增加整个粒子系统。
其他重要特性:
-
renderMode
:定义如何将粒子单元渲染到图层中。 -
preservesDepth
:定义3D粒子系统是扁平化为单层(默认情况下)还是可以与其容器层的3D空间中的其他层融合。
您可以在此处检查CAEmitterLayer的许多其他可配置属性。
CAEmitterCell属性
CAEmitterCell的属性分为三类:
- 粒子特定属性的起始值 。 例如,
color
属性定义将与contents
图像中的颜色组合的混合颜色。 - 特定属性的值在粒子之间变化的范围。 例如,如果将
emissionRange
属性设置为2π,则可以在360度半径内的任何方向上发射粒子。 如果指定较小的值,则可以为粒子创建圆锥形漏斗。 - 特定值随时间的变化 。 例如,如果将
alphaSpeed
设置为-0.1,则粒子的alpha值将每秒减少0.1。 当粒子从发射器离开时,它还会为粒子创建淡入淡出效果。
最重要的属性是:
-
CGImage
:分配一个CGImage
用作图像。 -
color
:设置要应用于每个粒子的颜色。 -
alphaSpeed
:设置在单元的整个生命周期内,粒子淡出或淡入(以秒为单位)的速度。 -
birthRate
:设置birthRate
要创建多少个粒子。 -
lifetime
:设置每个粒子应生存的时间(以秒为单位)。 -
velocity
:设置每个粒子的基本移动速度。 -
velocityRange
:设置可改变像元速度的量。 -
scale
:设置应有多大的粒子(全尺寸为1.0)。 -
scaleRange
:设置可改变单元格规模的数量。 -
spin
:设置应用于单元的旋转速度。 -
spinRange
:设置单元格旋转的数量。
您可能会注意到,每个属性都有对应的Speed和Range 。 速度定义值随时间变化多少。 范围定义初始值有多少变化。
您可以在此处检查CAEmitterCell的许多其他可配置属性。
我们将创建简单的macOS应用程序,以显示CAEmitterLayer的不同用法。
示例1:下雪。
那编程代码呢?
简单的代码示例。
另外,您可以看到编程代码。
看下面的代码。
您可以看到三个CAEmitterCell对象。 其中之一, emitterCell
,是trailCell
和fireworksCell
的容器。 CAEmitterCell有一个属性emitterCells
。 这意味着该单元可以具有一个可选的子单元阵列。
总而言之, CAEmitterLayer是一个发射,动画化和渲染粒子系统的层。
CAEmitterLayer定义了粒子系统的位置,形状,大小和渲染模式,但实际上它没有定义任何粒子-由CAEmitterCell处理。 您可以根据需要创建任意数量的发射器单元,然后将它们分配给发射器层。
谢谢阅读! 我希望这些信息对您有用。 如果您觉得本文有用,请不要忘记to。