2018-01-25

CAEmitterLayer是一个高性能的粒子引擎 是用来创建实时粒子动画, 比如:下雪 烟雾 火爆炸等

例如:点赞扩散的粒子效果

//点赞效果

self.emitter = [[CAEmitterLayer alloc] init];

  [self.btn.layer addSublayer:self.emitter];


    //发射源的形状

    self.emitter.emitterShape = kCAEmitterLayerCircle;

    //发射的形状(向外发射)

    self.emitter.emitterMode = kCAEmitterLayerOutline;

    //发着源的大小

    self.emitter.emitterSize = CGSizeMake(10, 0);

    //发着源的位置 按钮的中心位置

    self.emitter.emitterPosition = CGPointMake(self.btn.frame.size.width/2, self.btn.frame.size.height/2);

    self.emitter.birthRate = 0;//不开始动画(生成数量为0)


    CAEmitterCell *cell = [[CAEmitterCell alloc] init];//创建cell()

    //设置图片

    cell.contents = (id)[UIImage imageNamed:@"sparkle.png"].CGImage;

    //设置粒子存活时间 秒为单位

    cell.lifetime = 0.5;

    //设置粒子存活时间的范围 (不设置这个只存活1s 设置0.5 存活时间是0.5-1s 之间)

    cell.lifetimeRange = 0.1;

    //设置粒子的速度

    cell.velocity = 40;

    cell.velocityRange = 10; //  范围是由粒子的速度 和存活时间决定

    //粒子数量(每秒产生的数量)

    cell.birthRate = 2500;


    //    粒子透明度 每秒透明度减少0.4

    cell.alphaSpeed = -0.4;

    //    设置粒子颜色alpha能改变的范围(设置0.1 每秒粒子的透明度减少 0.1-1)

    cell.alphaRange = 0.10;

    //缩放图片

    cell.scale = 0.05;

    //缩放范围

    cell.scaleRange = 0.02;

    self.emitter.emitterCells = @[cell];


按钮的点击事件

//开始 清除之前的粒子 (从现在开始生成)

    self.emitter.beginTime = CACurrentMediaTime();

    self.emitter.birthRate = 1;

    [self performSelector:@selector(stopAction) withObject:nil afterDelay:0.1];

- (void)stopAction {

    self.emitter.birthRate = 0;

}

你可能感兴趣的:(2018-01-25)