粒子动画

2017-04-25  本文已影响53人  iYeso
一、在 UIKit 中,粒子系统由两部分组成:

实现步骤

具体什么样子的动画自己设置属性就可以了

 // 1: 创建一个粒子发射器
    let sender = CAEmitterLayer()

    // 1.0 设置位置
    sender.emitterPosition = CGPoint(x: UIScreen.main.bounds.size.width/2, y: -200)

    // 1.1 开启三维动画
    sender.preservesDepth = true

    // 1.2 1s发射的cell的个数
    sender.birthRate = 2

    // 1.3 发射器发送例子cell的速度。 粒子发射器和粒子cell设置一个就可以了
//    sender.velocity = 10

    
    // 1.4 发射器设置cell粒子的缩放比例
//    sender.scale = 1

    // 1.5 设置旋转
//    sender.spin = 2

    // 2: 创建粒子元素
    let cell = CAEmitterCell()

    // 2.0 cell个数
    cell.birthRate = 20

    // 2.1: 设置cell的生成周期
    cell.lifetime = 4
    cell.lifetimeRange = 2.5

    // 2.2 设置发射的方向

    cell.emissionLongitude = CGFloat(Double.pi/2)

    // 2.3 设置发射的范围
    cell.emissionRange = CGFloat(Double.pi/4)

    // 2.4 设置cell的运动速度
    cell.velocity = 200
    cell.velocityRange = 150

    // 2.5 设置放大的比例
    cell.scaleRange = 0.7
    cell.scaleSpeed = 0.5

    // 2.6 设置粒子的旋转

    cell.spin = CGFloat(Double.pi/4)
    cell.spinRange = CGFloat(Double.pi/8)

    // 2.7 包含图片
    cell.contents = UIImage(named: "good3_30x30_")?.cgImage

    // 3: 粒子发射器包含粒子元素
    sender.emitterCells = [cell]


    // 4: 讲粒子发射器添加到当前的视图
    view.layer.addSublayer(sender)

CAEmitterLayer和CAEmitterCell的属性

#######2.1: CAEmitterLayer的属性

emitterCells:   装着 CAEmitterCell 对象的数组, 被用于把粒子投放到 layer 上;

birthRate: 粒子产生系数,默认1.0 ;

lifetime: 发射器的生命周期

emitterPosition: 发射位置

emitterZposition: 发射源的z坐标位置;

emitterSize:  发射源的尺寸大;

emitterDepth:  决定粒子形状的深度联系, 三围视图

emitterShape:  发射源的形状:

emitterMode: 发射模式

renderMode: 渲染模式

preservesDepth: 不是多很清楚(粒子是平展在层上)

velocity :粒子速度

scale: 粒子的缩放比例

spin: 自旋转速度

seed :用于初始化随机数产生的种子

#######2.2: CAEmitterCell的属性

name :粒子的名字

isEnabled: 控制是否呈现来自此发射器的单元格

birthrate :粒子参数的速度乘数因子;

lifetime: 粒子生命周期
lifetimeRange :生命周期范围

emissionLatitude : 发射的纬度方向的角度
emissionLongitude : 发射的经度方向的角度

emissionRange ;周围发射角度

velocity :速度
velocityRange :速度范围

xAcceleration: 粒子 x 方向的加速度分量
yAcceleration: 粒子 y 方向的加速度分量
zAcceleration: 粒子 z 方向的加速度分量

scale :缩放比例:
scaleRange :缩放比例范围;
scaleSpeed :缩放比例速度:

spin :子旋转角度
spinrange :子旋转角度范围

color: 粒子的颜色

redRange :    一个粒子的颜色red能改变的范围
greenrange:   一个粒子的颜色green能改变的范围 
blueRange :   一个粒子的颜色blue能改变的范围
alphaRange:   一个粒子的颜色alpha能改变的范围

redSpeed;   粒子 red 在生命周期内的改变速度
greenSpeed:   粒子 green 在生命周期内的改变速度
blueSpeed:   粒子 blue 在生命周期内的改变速度
alphaSpeed: 粒子透明度在生命周期内的改变速度

contents :是个 CGImageRef 的对象, 既粒子要展现的图片

contentsRect :应该画在 contents 里的子rectangle 

contentsScale: 定义应用于单元格内容的比例因子

minificatonFilter :减小自己的大小

magnificationFilter :不是很清楚好像增加自己的大小

minificationFilterBias :减小大小的因子

emitterCells :粒子发射的粒子

style :不是很清楚

2.3 枚举

NSString * const kCAEmitterLayerPoints;
NSString * const kCAEmitterLayerOutline;
NSString * const kCAEmitterLayerSurface;
NSString * const kCAEmitterLayerVolume;

NSString * const kCAEmitterLayerPoint;
NSString * const kCAEmitterLayerLine;
NSString * const kCAEmitterLayerRectangle;
NSString * const kCAEmitterLayerCuboid;
NSString * const kCAEmitterLayerCircle;
NSString * const kCAEmitterLayerSphere;

NSString * const kCAEmitterLayerUnordered;
NSString * const kCAEmitterLayerOldestFirst;
NSString * const kCAEmitterLayerOldestLast;
NSString * const kCAEmitterLayerBackToFront;
NSString * const kCAEmitterLayerAdditive;
上一篇下一篇

猜你喜欢

热点阅读