CAEmitterLayer
-(void)createFireworks{
CAEmitterLayer *fireworks = [CAEmitterLayer layer];
fireworks.emitterPosition = CGPointMake(Width/2, Height-30);
fireworks.emitterSize = CGSizeMake(100, 100);
fireworks.emitterMode = kCAEmitterLayerOutline;
fireworks.emitterShape = kCAEmitterLayerLine;
fireworks.renderMode = kCAEmitterLayerAdditive;
fireworks.seed = (arc4random() % 100) + 1;
//ROCKET
CAEmitterCell *rocket = [CAEmitterCell emitterCell];
rocket.birthRate = 0.5;//发射粒子的间隔时间
rocket.emissionRange = 0.25 * M_PI;
rocket.velocity = 480;//粒子飞行速度
rocket.velocityRange = 100;//曝发范围
rocket.yAcceleration = 75;
rocket.lifetime = 1.02;//粒子曝发次数
rocket.contents = (id)[UIImage imageNamed:@"1"].CGImage;
rocket.scale = 0.2;//粒子包括曝发后的子粒子的大小
rocket.color = [UIColor redColor].CGColor;
rocket.greenRange = 1.0;//粒子的绿色RBG值变化范围
rocket.redRange = 1.0;//粒子的红色RBG值变化范围
rocket.blueRange = 1.0;//粒子的蓝色RBG值变化范围
rocket.spinRange = M_PI;
//曝发
CAEmitterCell *burst = [CAEmitterCell emitterCell];
burst.birthRate = 1.0;
burst.velocity = 0;
burst.scale = 2.5;
burst.redRange = 1.5;
burst.greenRange = 1.5;
burst.blueRange = 1.5;
burst.lifetime = 0.35;
//火花
CAEmitterCell *spark = [CAEmitterCell emitterCell];
spark.birthRate = 400;//粒子参数的乘数因子
spark.velocity = 125;
spark.emissionRange = M_PI_2;//发射的角度
spark.yAcceleration = 75;
spark.lifetime = 3;
spark.contents = (id)[UIImage imageNamed:@"2"].CGImage;
spark.scaleRange = -0.2;//缩放比例范围
spark.greenRange = 1.0;
spark.redRange = 1.0;
spark.blueRange = 1.0;
spark.alphaRange = -0.25;
spark.spin = M_PI_2;
spark.spinRange = M_PI_2;//子旋转角度范围
fireworks.emitterCells = @[rocket];
rocket.emitterCells = @[burst];
burst.emitterCells = @[spark];
[self.view.layer addSublayer:fireworks];
}
代码设置/结构说明:
1、CAEmitterCell
CAEmitterCell *effectCell = [CAEmitterCell emitterCell];
effectCell 几个重要属性:
1).birthRate 顾名思义没有这个也就没有effectCell,这个必须要设置,具体含义是每秒某个点产生的effectCell数量
2).lifetime & lifetimeRange 表示effectCell的生命周期,既在屏幕上的显示时间要多长。
3).contents 这个和CALayer一样,只是用来设置图片
4).name 这个是当effectCell存在caeEmitter 的emitterCells中用来辨认的。用到setValue forKeyPath比较有用
5).velocity & velocityRange & emissionRange 表示cell向屏幕右边飞行的速度 & 在右边什么范围内飞行& +-角度扩散
6).把cell做成array放进caeEmitter.emitterCells里去。caeEmitter.renderMode有个效果很不错,能变成火的就是kCAEmitterLayerAdditive
属性:
alphaRange: 一个粒子的颜色alpha能改变的范围;
alphaSpeed:粒子透明度在生命周期内的改变速度;
birthrate:粒子参数的速度乘数因子;
blueRange:一个粒子的颜色blue 能改变的范围;
blueSpeed: 粒子blue在生命周期内的改变速度;
color:粒子的颜色
contents:是个CGImageRef的对象,既粒子要展现的图片;
contentsRect:应该画在contents里的子rectangle:
emissionLatitude:发射的z轴方向的角度
emissionLongitude:x-y平面的发射方向
emissionRange;周围发射角度
emitterCells:粒子发射的粒子
enabled:粒子是否被渲染
greenrange: 一个粒子的颜色green 能改变的范围;
greenSpeed: 粒子green在生命周期内的改变速度;
lifetime:生命周期
lifetimeRange:生命周期范围
magnificationFilter:不是很清楚好像增加自己的大小
minificatonFilter:减小自己的大小
minificationFilterBias:减小大小的因子
name:粒子的名字
redRange:一个粒子的颜色red 能改变的范围;
redSpeed; 粒子red在生命周期内的改变速度;
scale:缩放比例:
scaleRange:缩放比例范围;
scaleSpeed:缩放比例速度:
spin:子旋转角度
spinrange:子旋转角度范围
style:不是很清楚:
velocity:速度
velocityRange:速度范围
xAcceleration:粒子x方向的加速度分量
yAcceleration:粒子y方向的加速度分量
zAcceleration:粒子z方向的加速度分量
2、CAEmitterLayer
CAEmitterLayer提供了一个基于Core Animation的粒子发射系统,粒子用CAEmitterCell来初始化。粒子画在背景层盒边界上
属性:
birthRate:粒子产生系数,默认1.0;
emitterCells: 装着CAEmitterCell对象的数组,被用于把粒子投放到layer上;
emitterDepth:决定粒子形状的深度联系:emittershape
emitterMode:发射模式
NSString * const kCAEmitterLayerPoints;
NSString * const kCAEmitterLayerOutline;
NSString * const kCAEmitterLayerSurface;
NSString * const kCAEmitterLayerVolume;
emitterPosition:发射位置
emitterShape:发射源的形状:
NSString * const kCAEmitterLayerPoint;
NSString * const kCAEmitterLayerLine;
NSString * const kCAEmitterLayerRectangle;
NSString * const kCAEmitterLayerCuboid;
NSString * const kCAEmitterLayerCircle;
NSString * const kCAEmitterLayerSphere;
emitterSize:发射源的尺寸大;
emitterZposition:发射源的z坐标位置;
lifetime:粒子生命周期
preservesDepth:不是多很清楚(粒子是平展在层上)
renderMode:渲染模式:
NSString * const kCAEmitterLayerUnordered;
NSString * const kCAEmitterLayerOldestFirst;
NSString * const kCAEmitterLayerOldestLast;
NSString * const kCAEmitterLayerBackToFront;
NSString * const kCAEmitterLayerAdditive;
scale:粒子的缩放比例:
seed:用于初始化随机数产生的种子
spin:自旋转速度
velocity:粒子速度
CAEmitterLayer的更多相关文章
- CAEmitterLayer实现雪花效果
CAEmitterLayer 简介 在iOS5.0中,Apple引入了CAEmitterLayer层,CAEmitterLayer是一个高性能的粒子效果引擎,被用来创建实时粒子动画,如:烟雾,火,雨等 ...
- 关于粒子发射(CAEmitterLayer)
技术是条长而远的路,只有不断学习丰富自己的技能才能让自己行走在路上! CAEmitterCell CAEmitterCell: CAEmitterCell是粒子发射系统里的粒子,用CAEmitterC ...
- CAEmitterLayer 粒子发射Layer的相关属性
emitterCells:CAEmitterCell对象的数组,被用于把粒子投放到layer上 birthRate:可以通俗的理解为发射源的个数,默认1.0.当前每秒产生的真实粒子数为=CAEmitt ...
- iOS - CAEmitterLayer流星
效果图: 流星: #pragma mark - loading animation - (void)showLoadingAnimation { CGRect mainBounds = [[UIScr ...
- iOS - CAEmitterLayer 学习笔记一
其他参考博客: http://my.oschina.net/u/2340880/blog/485095 http://www.cnblogs.com/YouXianMing/p/3785876.htm ...
- 能产生粒子效果的CAEmitterLayer
能产生粒子效果的CAEmitterLayer 下雪效果: // // RootViewController.m // Cell // // Copyright (c) 2014年 Y.X. All r ...
- ios 基于CAEmitterLayer的雪花,烟花,火焰,爱心等效果demo(转)
转载自:http://blog.csdn.net/mad2man/article/details/16898369 分类: cocoa SDK2013-11-23 11:52 388人阅读 评论(0) ...
- 使用CAEmitterLayer实现下雪效果
效果图: 代码部分: #import "ViewController.h" @interface ViewController () @end @implementation Vi ...
- 使用CAEmitterLayer产生粒子效果
ViewController.m #import "ViewController.h" @implementation ViewController - (void)viewDid ...
随机推荐
- Ubuntu 桌面歌词
Ubuntu 有个用来显示歌词软件叫 osd-lyrics. 这个软件的强大之处在于他可以和各种播放器配合, 并且可以自动下载歌词. 自从升级到14.04后不能用了,便以为该软件被废弃了. 无意中发现 ...
- 根据SimpleScheduleBuilder配置不同的SimpleTrigger触发器
Job代码: [java] view plaincopy package cn.zto.job; import java.text.SimpleDateFormat; import java.ut ...
- 解决Mac OS X Lion狮子系统及win7多分区教程
[绿茶教程]解决Mac OS X Lion狮子系统及win7多分区教程 工具/原料 8G的u盘制作lion系统安装盘 步骤/方法 插入U盘---开机---按住左下角“Option”键(alt ...
- Unity Diffuse Metal Shader Mod
Shader "MetalShader" { Properties { _MainTex ("Base (RGB) RefStrGloss (A)", 2D) ...
- Java程序员必知的8大排序算法
8种排序之间的关系 直接插入排序 (1)基本思想:在要排序的一组数中,假设前面(n-1)[n>=2] 个数已经是排 好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数 也是排好顺序的.如 ...
- Intersection - POJ 1410(线段与矩形是否相交)
题目大意:给一个线段和一个矩形,判断线段是否和矩形有公共点. 分析:用矩形的四个边当线段判断与所给的线段是否有交点,需要注意的是给的矩形是不标准的,需要自己转换,还需要注意线段有可能在矩形内部. ...
- hdoj 2717 Catch That Cow【bfs】
Catch That Cow Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- redis中各种数据类型对应的jedis操作命令
redis中各种数据类型对应的jedis操作命令 一.常用数据类型简介: redis常用五种数据类型:string,hash,list,set,zset(sorted set). 1.String类型 ...
- Word2007怎样从随意页開始设置页码 word07页码设置毕业论文
Word2007怎样从随意页開始设置页码 word07页码设置毕业论文 页開始设置页码. 一.插入页码 插入→页眉和页脚→页码→页面底端→普通数字3 说明:被→分隔的内容分别为选项卡,模块,命令but ...
- Swift --- 面向对象中类和对象的属性
Swift中类和对象的属性分为三种:储存属性,计算属性和类属性. import Foundation class Person { // 储存属性必须赋初值 var score1: Int = 20 ...