您的位置:首页 > 移动开发 > IOS开发

iOS之CAEmitterLayer详解

2015-11-11 14:55 316 查看
CAEmitterLayer提供了粒子系统的核心动画,笔者亲手写了个例子感受了一下,功能还是蛮强大的,理解了其中的属性相信能做出很炫的东西,接下来我们就开始详细的了解CAEmitterLayer,直接上一个雪花飘落的代码了,在代码上进行注解。

- (void)configSnowEmitterLayer {
// 生成一个CAEmitterLayer
CAEmitterLayer *snowEmitterLayer = [CAEmitterLayer layer];
// 生成粒子的位置
snowEmitterLayer.emitterPosition = CGPointMake(self.view.bounds.size.width/2, -30);
// 生成粒子的区域大小
snowEmitterLayer.emitterSize = CGSizeMake(self.view.bounds.size.width*2, 0);

// 设置粒子发射模式
snowEmitterLayer.emitterMode = kCAEmitterLayerOutline;
// 设置粒子源的形状
snowEmitterLayer.emitterShape = kCAEmitterLayerLine;

// 设置layer的透明度,圆角等
snowEmitterLayer.shadowOpacity = 1.0;
snowEmitterLayer.shadowRadius = 0.0;
snowEmitterLayer.shadowOffset = CGSizeMake(0.0, 1.0f);
snowEmitterLayer.shadowColor = [[UIColor whiteColor] CGColor];

// 设置发射出的粒子单元
snowEmitterLayer.emitterCells = [NSArray arrayWithObject:[self createSnowCell]];

// 添加到layer
[self.view.layer insertSublayer:snowEmitterLayer atIndex:0];
}

- (CAEmitterCell *)createSnowCell {
// 创建粒子单元
CAEmitterCell *snowCell = [CAEmitterCell emitterCell];

snowCell.birthRate = 1.0f;// 每秒生成例子频率
snowCell.lifetime = 120.f; // 粒子系统的生命周期

snowCell.velocity = -10;   // 粒子速度
snowCell.velocityRange = 10; // 粒子速度范围
snowCell.yAcceleration = 2; // 粒子y方向的加速度分量
snowCell.emissionRange = 0.5 * M_PI; // 周围发射角度
snowCell.spinRange = 0.25 * M_PI;  // 旋转角度
snowCell.contents = (id)[[UIImage imageNamed:@"Snow"] CGImage]; // 粒子显示内容
snowCell.color = [[UIColor colorWithRed:0.600 green:0.658 blue:0.743 alpha:1.000] CGColor]; // 粒子颜色

return snowCell;
}


现在奉上所有的关于CAEmitterLayer和CAEmitterCell的所有的常用属性

CAEmitterLayer

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

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

emitterDepth:决定粒子形状的深度联系:emitter shape

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

lifetime:粒子生命周期

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

scale:粒子的缩放比例:

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

spin:自旋转速度

velocity:粒子速度

CAEmitterCell

CAEmitterCell类代从CAEmitterLayer射出的粒子;emitter cell定义了粒子发射的方向。

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:生命周期范围 lifetime= lifetime(+/-) lifetimeRange

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

minificatonFilter:减小自己的大小

minificationFilterBias:减小大小的因子

name:粒子的名字

redRange:一个粒子的颜色red 能改变的范围;

redSpeed; 粒子red在生命周期内的改变速度;

scale:缩放比例:

scaleRange:缩放比例范围;

scaleSpeed:缩放比例速度:

spin:粒子旋转角度

spinrange:粒子旋转角度范围

velocity:速度

velocityRange:速度范围

xAcceleration:粒子x方向的加速度分量

yAcceleration:粒子y方向的加速度分量

zAcceleration:粒子z方向的加速度分量

最后附上写的demo链接:http://download.csdn.net/detail/zyr124/9260455
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息