美文网首页
粒子动画

粒子动画

作者: c42b9af86268 | 来源:发表于2016-12-07 11:10 被阅读0次

一个或多个CAEmitterCells:发射器电池可以看作是单个粒子的原型(例如,一个单一的粉扑在一团烟雾)。当散发出一个粒子UIKit根据这个发射粒子和定义的基础上创建一个随机粒子。此原型包括一些属性来控制粒子的图片,颜色,方向,运动,缩放比例和生命周期。

CAEmitterLayer通过添加 emitterLayer.emitterCells = array 添加cell 

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:粒子参数的速度乘数因子,默认1.0; 

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:子旋转角度范围

velocity:速度

velocityRange:速度范围

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

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

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

Layer :

emitterShape:发射源的形状:

emitterPosition:发射位置

emitterPosition:发射位置

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

emitterSize:发射源的尺寸大小;

renderMode:渲染模式:

//创建并使用 CAEmitterLayer

- (void)viewDidLoad {

[super viewDidLoad];

self.view.backgroundColor = [UIColor yellowColor];

[self.view.layer insertSublayer:self.emitterLayer above:0];

[self.emitterLayer setHidden:false];

}

-(CAEmitterLayer *)emitterLayer{

if (!_emitterLayer) {

CAEmitterLayer *emitterLayer = [CAEmitterLayer layer];

emitterLayer.emitterPosition = CGPointMake(ALinScreenWidth-100, ALinScreenHeight-100);

//尺寸大小

emitterLayer.emitterSize = CGSizeMake(20, 20);

//渲染模式x

emitterLayer.renderMode = kCAEmitterLayerUnordered;

NSMutableArray *array = [NSMutableArray array];

for (int i=0; i<10; i++) {

//            发射单元

CAEmitterCell *stepCell = [CAEmitterCell emitterCell];

//            创建速度

stepCell.birthRate = 1;

//            粒子存活时间  随机数函数arc4random_uniform(x),可以用来产生0~(x-1)范围内的随机数,不需要再进行取模运算。如果要生成1~x的随机数,可以这么写:arc4random_uniform(x)+1

stepCell.lifetime = arc4random_uniform(4)+1;

//            粒子的生存时间容差

stepCell.lifetimeRange = 1.5;

//            颜色 图片名称

UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"good%d_30x30", i]];

stepCell.contents = (__bridge id _Nullable)([image CGImage]);

stepCell.velocity = arc4random_uniform(100)+100;

//            粒子速度的容差

stepCell.velocityRange = 80;

//            粒子在xy平面的发射角度

stepCell.emissionLongitude = M_PI+M_PI_2;

//            粒子发射角度的容差

stepCell.emissionRange = M_PI_2/6;

//            缩放比例

stepCell.scale = 0.3;

[array addObject:stepCell];

}

emitterLayer.emitterCells = array;

_emitterLayer = emitterLayer;

}

return _emitterLayer;

}

相关文章

  • 粒子动画效果实现和Swift面向协议开发

    粒子动画效果实现是通过CALayer的子类,CAEmitterLayer实现。 实现粒子动画效果分以下几个步骤: ...

  • 粒子动画

  • 粒子动画

    占位符

  • 粒子动画

    一、在 UIKit 中,粒子系统由两部分组成: 1: 一个或多个 CAEmitterCells :发射器电...

  • 粒子动画

    一个或多个CAEmitterCells:发射器电池可以看作是单个粒子的原型(例如,一个单一的粉扑在一团烟雾)。当散...

  • 粒子动画

    @property(nonatomic, strong) CAEmitterLayer *emitterLayer...

  • 粒子动画

    公司做了一个类似小游戏的项目,背景需要放个流星雨效果粒子动画,详细的不多说,主要自己纪录学习,上代码。 -(voi...

  • 粒子动画

    粒子系统 直播中常用的粒子是怎么搞出来的呢,下面来进行一下探究 CAEmitterLayer 是一个高性能的粒子引...

  • 粒子动画

    什么是粒子系统? 粒子系统是由总体具有相同的表现规律,个体却随机表现出不同的特征的大量显示元素构成的集合 粒子定义...

  • 粒子动画

网友评论

      本文标题:粒子动画

      本文链接:https://www.haomeiwen.com/subject/fgydmttx.html