iOS-利用粒子发射器(CAEmitterLayer) 制作发射动画
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) 制作发射动画相关推荐
- 利用网络现有资源 制作 swf动画
利用网络现有资源 制作 swf动画 想设计一段flash,可是不知无从下手,刚好网上找到一个内容接近的,便把它down下来,利用这个现成的资源进行修改. 问题出现了,就是如何修改swf文件?我 ...
- 利用Animation控件制作帧动画过程详解
利用Animation控件制作帧动画过程详解 前言 通过Animation控件来达到序列图的播放(素材和示例视频在文章末尾) 一.序列图 (此素材为已经分割好的序列图) 如若序列图在一张图片上,请参考 ...
- iOS---使用CAEmitterLayer制作发射粒子的特效
CAEmitterLayer是QuartzCore提供的粒子引擎, 可用于制作美观的粒子特效. 如下图是一个粒子特效的截图, 实际的动态效果会更好, 因为gif制作比较模糊就没有贴出来. CAEmit ...
- FunPlus特效专家张韶勇:如何利用跨平台工具快速制作像素动画?
有些用于主机端的特效工具和插件可以和手游工具相结合,从而提高手游特效品质和制作效率. FunPlus首席特效专家张韶勇对此感受颇深.他拥有16年特效工作经验,此前在海外做主机游戏的特效,回国后曾在网易 ...
- 利用Potplay和Photoshop制作Gif动画
(1). 打开PotPlayer软件,把要做动画的视频拉到这个软件中,播放到临近要截取的地方,按下 Ctrl+G,如图1,将要设置的设置好,截取图片完成之后点击 "打开存档文件夹&qu ...
- iOS - CAEmitterlayer粒子发射器
转载:https://www.jianshu.com/p/197c2257f597 在粒子系统中,CAEmitterLayer负责发射粒子(当然粒子也可以发射粒子),而这些所谓的粒子,就是CAEmit ...
- PhotoShop简单案例(2)——利用时间轴功能制作制作省略号GIF动画
目录 一.项目介绍 二.基本流程 2.1 新建画布 2.2 输入文字 2.3 增删省略号 2.4 创建视频时间轴 三.效果演示 一.项目介绍 本文将介绍利用时间轴功能制作制作省略号GIF动画,制作完成 ...
- android 矢量粒子动画,iOS CAEmitterLayer实现粒子发射动画效果
iOS实现粒子发射动画效果图 动画效果用 CAEmitterLayer 实现.CAEmitterLayer 显示粒子发射动画,具体的粒子由 CAEmitterCell 封装.代码示例是展示 CAEmi ...
- iOS 烟花撒花效果,图层渐变,图层倒影特效。CAEmitterLayer粒子发射器
iOS 烟花撒花效果,图层渐变,图层倒影特效.CAEmitterLayer粒子发射器 上一节我写了一个关于视图图层的相关类,有关CALayer这个类的使用和一些用法,具体看这里,就是我们在处理视图的时 ...
最新文章
- SQL SERVER 2005 同步复制技术
- Redis的安装与配置
- cpu密集型 计算密集型 io密集型 简介
- Redis 数据类型之(底层解析)
- 也许,这样理解 HTTPS 更容易
- VBRK-RFBSK - 会計への転記ステータス
- 设计模式:观察者模式(Observer)
- 计算机网络信息安全定义,计算机网络与信息安全.pdf
- java中native的详解
- js获取当前日期加上30天之后的日期
- Excel函数实战技巧精粹(二)常用函数之VLOOKUP全解
- shiro 实现退出登录功能
- AsposeWord转pdf的正确姿势
- 浅析计算机用户身份识别技术,浅谈网络安全之身份认证技术
- Redis 服务器常用配置参数
- 【活动回顾】上海区块链开发者大会(2021)第二日精彩回顾
- GridView指定列求和
- 视频加水印怎么加?简单的方法
- 工具相关累计 慢慢更新防止忘记
- debian9.6安装和卸载新立得软件包管理器