iOS动画开发之——炫酷的粒子效果

一、粒子发射器

        iOS中的粒子效果有两部分组成,一部分为发射器,设置例子发射的宏观属性,另一部分是粒子单元,用于设置相应的粒子属性。粒子发射器是基于Layer层,没错,又是Layer,他的全名叫做:

CAEmitterLayer。其中常用的属性如下:

@property(nullable, copy) NSArray *emitterCells;

粒子单元数组,例如你在绘制火焰的效果时,你可以创建两个单元,一个单元负责烟雾,一个单元负责火苗

@property float birthRate;

粒子的创建速率,默认为1/s。

@property float lifetime;

粒子的存活时间。默认为1S。

@propertyCGPointemitterPosition;

发射器在xy平面的中心位置

@propertyCGFloatemitterZPosition;

发射器在Z平面的位置

@propertyCGSizeemitterSize;

发射器的尺寸大小

@propertyCGFloatemitterDepth;

发射器的深度,在某些模式下会产生立体效果

@property(copy)NSString*emitterShape;

/*CA_EXTERN NSString * const kCAEmitterLayerPoint//点的形状,粒子从一个点发出

CA_EXTERN NSString * const kCAEmitterLayerLine//线得的形状,粒子从一条先发出

CA_EXTERN NSString * const kCAEmitterLayerRectangle//矩形形状,粒子冲一个矩形发出

CA_EXTERN NSString * const kCAEmitterLayerCuboid//立方体形状,会影响Z平面效果

CA_EXTERN NSString * const kCAEmitterLayerCircle//圆形,粒子会在圆形范围发射

CA_EXTERN NSString * const kCAEmitterLayerSphere//球形

*/

@property(copy) NSString *renderMode;//发射器渲染模式

/*

CA_EXTERN NSString * const kCAEmitterLayerUnordered//这种模式下,粒子是无序出现的,多个发射源将混合

CA_EXTERN NSString * const kCAEmitterLayerOldestFirst//这种模式下,声明久的粒子会被渲染在最上层

CA_EXTERN NSString * const kCAEmitterLayerOldestLast//这种模式下,年轻的粒子会被渲染在最上层

CA_EXTERN NSString * const kCAEmitterLayerBackToFront//这种模式下,粒子的渲染按照Z轴的前后顺序进行

CA_EXTERN NSString * const kCAEmitterLayerAdditive//这种模式会进行粒子混合

*/

@propertyBOOLpreservesDepth;

是否开启三维空间效果

@property float velocity;

粒子的运动速度

@property float scale;

粒子的缩放大小

@property float spin;

    粒子的旋转位置

@property unsigned int seed;

初始化随机的粒子种子

二、粒子单元

        设置好了粒子发射器,我们还需要初始化一些粒子单元,设置具体粒子的属性,我们使用到的类是CAEmitterCell这个类。

+ (instancetype)emitterCell;

类方法创建发射单元

@property(copy) NSString *name;

设置发射单元的名称

@property(getter=isEnabled)BOOLenabled;

是否允许发射器渲染

@property float birthRate;

粒子的创建速率

@property float lifetime;

粒子的生存时间

@propertyfloatlifetimeRange;

粒子的生存时间容差

@propertyCGFloatemissionLatitude;

粒子在Z轴方向的发射角度

@propertyCGFloatemissionLongitude;

粒子在xy平面的发射角度

@propertyCGFloatemissionRange;

粒子发射角度的容差

@propertyCGFloatvelocity;

粒子的速度

@propertyCGFloatvelocityRange;

粒子速度的容差

@propertyCGFloatxAcceleration;

@propertyCGFloatyAcceleration;

@propertyCGFloatzAcceleration;

x,y,z三个方向的加速度

@property CGFloat scale;

@propertyCGFloatscaleRange;

@propertyCGFloatscaleSpeed;

缩放大小,缩放容差和缩放速度

@property CGFloat spin;

@propertyCGFloatspinRange;

旋转度与旋转容差

@property CGColorRef color;

粒子的颜色

@property float redRange;

@property float greenRange;

@property float blueRange;

@property float alphaRange;

粒子在rgb三个色相上的容差和透明度的容差

@property float redSpeed;

@property float greenSpeed;

@property float blueSpeed;

@property float alphaSpeed;

粒子在RGB三个色相上的变化速度和透明度的变化速度

@property(strong) id contents;

渲染粒子,可以设置为一个CGImage的对象

@propertyCGRectcontentsRect;

渲染的范围

你可能感兴趣的:(iOS动画开发之——炫酷的粒子效果)