CAEmitterLayer,是CALayer子类,自iOS 5.0以后推出,是一个高性能的粒子引擎,被用来创建实时粒子动画;
CAEmitterCell,类似于一个CALayer,自带一个contents属性,用于设定CGImage图像;
CAEmitterLayer可以理解为是CAEmitterCell的容器,可以包含多种CAEmitterCell的cells;

结果如下图:
粒子图片素材

运行结果

发送形状的样式:emitterShape

 发送形状的样式:emitterShapeCA_EXTERN NSString * const kCAEmitterLayerPoint  点CA_EXTERN NSString * const kCAEmitterLayerLine   线CA_EXTERN NSString * const kCAEmitterLayerRectangle  举行CA_EXTERN NSString * const kCAEmitterLayerCuboid 立方体CA_EXTERN NSString * const kCAEmitterLayerCircle 曲线CA_EXTERN NSString * const kCAEmitterLayerSphere 圆形

发送的样式:emitterMode

 发送的样式:emitterModeCA_EXTERN NSString * const kCAEmitterLayerPoints   以点的方式  默认样式CA_EXTERN NSString * const kCAEmitterLayerOutline  线的样式CA_EXTERN NSString * const kCAEmitterLayerSurface  以面的形式CA_EXTERN NSString * const kCAEmitterLayerVolume   以团的样式

粒子出现的样式:renderMode

 粒子出现的样式:renderModeCA_EXTERN NSString * const kCAEmitterLayerOldestFirst最后一个出生的粒子在第一个CA_EXTERN NSString * const kCAEmitterLayerOldestLast最后出生的就在最后一个CA_EXTERN NSString * const kCAEmitterLayerBackToFront把后面的放到上面CA_EXTERN NSString * const kCAEmitterLayerAdditive叠加效果

粒子的属性

 粒子的属性contents:粒子的内容lifetime:存活时间birthRate:每秒发送粒子数量lifetimeRange:存活时间的范围birthRate:每秒的粒子生成的数量emissionLatitude:散发的维度  他表示的是一个弧度   上下emissionLongitude:散发的经度  ->弧度   ->左右velocity:发送的速度   速度越快发送的越远->动力velocityRange:发送速度的范围xAcceleration;  x,y,z轴的加速度  惯性  动力yAcceleration;zAcceleration;emissionRange:散发的范围  ->弧度  ->范围name:粒子的名字  可以通过名字  找到粒子

具体代码实现步骤:
1、定义一个CAEmitterLayer属性

@interface ViewController ()
@property (nonatomic ,strong)CAEmitterLayer *emitterLayer;
@end

2、懒加载CAEmitterLayer

//懒加载离子发射器
- (CAEmitterLayer *)emitterLayer{if (_emitterLayer) {return _emitterLayer;}_emitterLayer = [[CAEmitterLayer alloc]init];[self.view.layer addSublayer:_emitterLayer];_emitterLayer.backgroundColor = [UIColor blackColor].CGColor;return _emitterLayer;
}

3、定位离子发射器发射点的位置

    //定位离子发射器发射点的位置self.emitterLayer.emitterPosition = self.view.center;self.view.backgroundColor = [UIColor blackColor];

4、设置粒子发送器每秒钟发送粒子数量

    //设置粒子发送器每秒钟发送粒子数量self.emitterLayer.birthRate = 3;

5、初始化粒子颗粒,并添加图片

//初始化粒子颗粒1,并添加图片CAEmitterCell *cell = [CAEmitterCell emitterCell];cell.contents = (id)[UIImage imageNamed:@"红花"].CGImage;//初始化粒子颗粒2,并添加图片CAEmitterCell *cell1 = [CAEmitterCell emitterCell];cell1.contents = (id)[UIImage imageNamed:@"花叶"].CGImage;//初始化粒子颗粒3,并添加图片CAEmitterCell *cell2 = [CAEmitterCell emitterCell];cell2.contents = (id)[UIImage imageNamed:@"树叶"].CGImage;

6、设置粒子散发参数

/***  设置红花散发参数*///  粒子的出生量cell.birthRate = 2;//  存活时间cell.lifetime = 5;cell.lifetimeRange = 1;//  设置粒子发送速度cell.velocity = 50;cell.velocityRange = 30;//  粒子发送的方向cell.emissionLatitude = M_PI;//  发送粒子的加速度cell.zAcceleration = -100;//  散发粒子的范围  ->  弧度cell.emissionRange = 2*M_PI;/***  设置花叶散发参数*///  粒子的出生量cell1.birthRate = 3;//  存活时间cell1.lifetime = 3;cell1.lifetimeRange = 2;//  设置粒子发送速度cell1.velocity = 50;cell1.velocityRange = 120;//  粒子发送的方向cell1.emissionLongitude = 2*M_PI;//  发送粒子的加速度cell1.xAcceleration = 100;//  散发粒子的范围  ->  弧度cell1.emissionRange = 2*M_PI; /***  设置树叶散发参数*///   粒子的出生量cell2.birthRate = 3;//   存活时间cell2.lifetime = 3;cell2.lifetimeRange = 1;//   设置粒子发送速度cell2.velocity = 80;cell2.velocityRange = 150;//   粒子发送的方向cell2.emissionLatitude = M_PI;//   发送粒子的加速度cell2.zAcceleration = -100;//   散发粒子的范围  ->  弧度cell2.emissionRange = 2*M_PI;

7、把粒子的cell添加到粒子发送器emitterLayer中

    //把粒子的cell添加到粒子发送器self.emitterLayer.emitterCells = @[cell,cell1,cell2];

iOS-利用粒子发射器(CAEmitterLayer) 制作发射动画相关推荐

  1. 利用网络现有资源 制作 swf动画

    利用网络现有资源 制作 swf动画 想设计一段flash,可是不知无从下手,刚好网上找到一个内容接近的,便把它down下来,利用这个现成的资源进行修改.     问题出现了,就是如何修改swf文件?我 ...

  2. 利用Animation控件制作帧动画过程详解

    利用Animation控件制作帧动画过程详解 前言 通过Animation控件来达到序列图的播放(素材和示例视频在文章末尾) 一.序列图 (此素材为已经分割好的序列图) 如若序列图在一张图片上,请参考 ...

  3. iOS---使用CAEmitterLayer制作发射粒子的特效

    CAEmitterLayer是QuartzCore提供的粒子引擎, 可用于制作美观的粒子特效. 如下图是一个粒子特效的截图, 实际的动态效果会更好, 因为gif制作比较模糊就没有贴出来. CAEmit ...

  4. FunPlus特效专家张韶勇:如何利用跨平台工具快速制作像素动画?

    有些用于主机端的特效工具和插件可以和手游工具相结合,从而提高手游特效品质和制作效率. FunPlus首席特效专家张韶勇对此感受颇深.他拥有16年特效工作经验,此前在海外做主机游戏的特效,回国后曾在网易 ...

  5. 利用Potplay和Photoshop制作Gif动画

    (1).    打开PotPlayer软件,把要做动画的视频拉到这个软件中,播放到临近要截取的地方,按下 Ctrl+G,如图1,将要设置的设置好,截取图片完成之后点击 "打开存档文件夹&qu ...

  6. iOS - CAEmitterlayer粒子发射器

    转载:https://www.jianshu.com/p/197c2257f597 在粒子系统中,CAEmitterLayer负责发射粒子(当然粒子也可以发射粒子),而这些所谓的粒子,就是CAEmit ...

  7. PhotoShop简单案例(2)——利用时间轴功能制作制作省略号GIF动画

    目录 一.项目介绍 二.基本流程 2.1 新建画布 2.2 输入文字 2.3 增删省略号 2.4 创建视频时间轴 三.效果演示 一.项目介绍 本文将介绍利用时间轴功能制作制作省略号GIF动画,制作完成 ...

  8. android 矢量粒子动画,iOS CAEmitterLayer实现粒子发射动画效果

    iOS实现粒子发射动画效果图 动画效果用 CAEmitterLayer 实现.CAEmitterLayer 显示粒子发射动画,具体的粒子由 CAEmitterCell 封装.代码示例是展示 CAEmi ...

  9. iOS 烟花撒花效果,图层渐变,图层倒影特效。CAEmitterLayer粒子发射器

    iOS 烟花撒花效果,图层渐变,图层倒影特效.CAEmitterLayer粒子发射器 上一节我写了一个关于视图图层的相关类,有关CALayer这个类的使用和一些用法,具体看这里,就是我们在处理视图的时 ...

最新文章

  1. SQL SERVER 2005 同步复制技术
  2. Redis的安装与配置
  3. cpu密集型 计算密集型 io密集型 简介
  4. Redis 数据类型之(底层解析)
  5. 也许,这样理解 HTTPS 更容易
  6. VBRK-RFBSK - 会計への転記ステータス
  7. 设计模式:观察者模式(Observer)
  8. 计算机网络信息安全定义,计算机网络与信息安全.pdf
  9. java中native的详解
  10. js获取当前日期加上30天之后的日期
  11. Excel函数实战技巧精粹(二)常用函数之VLOOKUP全解
  12. shiro 实现退出登录功能
  13. AsposeWord转pdf的正确姿势
  14. 浅析计算机用户身份识别技术,浅谈网络安全之身份认证技术
  15. Redis 服务器常用配置参数
  16. 【活动回顾】上海区块链开发者大会(2021)第二日精彩回顾
  17. GridView指定列求和
  18. 视频加水印怎么加?简单的方法
  19. 工具相关累计 慢慢更新防止忘记
  20. debian9.6安装和卸载新立得软件包管理器

热门文章

  1. 我觉得拍照这丫头狠有天赋
  2. 清除本地dns(Mac,win)
  3. 苹果,Inter,AMD
  4. C#语言实例源码系列-实现Word转换TXT
  5. Android 悬浮窗、悬浮球开发
  6. 如何编辑小红书种草文案?小红书怎么编写种草文案?
  7. CDN概念和基本原理
  8. 安卓性能优化之启动优化
  9. 随机密码生成Python
  10. 大数据高级开发工程师——Spark学习笔记(9)