2018正版葡京赌侠诗CAEmitterLayer

CAEmitterLayer

在iOS
5中,苹果引入了一个新的CALayer子类叫做CAEmitterLayerCAEmitterLayer是一个高性能的粒子引擎,被用来创立实时例子动画如:上坡雾,火,雨等等这几个职能。

CAEmitterLayer看上去像是许多CAEmitterCell的容器,这些CAEmitierCell概念了一个例证效果。你将会为分裂的事例效果定义一个或五个CAEmitterCell作为模版,同时CAEmitterLayer肩负依据这几个模版实例化一个粒子流。一个CAEmitterCell看似于一个CALayer:它有一个contents性能可以定义为一个CGImage,其它还有一对可设置属性决定着表现和行为。我们不会对那几个属性逐一开展详尽的叙说,你们可以在CAEmitterCell类的头文件中找到。

俺们来举个例证。我们将动用在一圆中发出差距速度和透明度的粒子创制一个火爆炸的效果。清单6.13富含了变化爆炸的代码。图6.13是运行结果

清单6.13 用CAEmitterLayer创办爆炸效果

2018正版葡京赌侠诗 12018正版葡京赌侠诗 2

 1 #import "ViewController.h"
 2 #import 
 3 
 4 @interface ViewController ()
 5 
 6 @property (nonatomic, weak) IBOutlet UIView *containerView;
 7 
 8 @end
 9 
10 @implementation ViewController
11 
12 - (void)viewDidLoad
13 {
14     [super viewDidLoad];
15     
16     //create particle emitter layer
17     CAEmitterLayer *emitter = [CAEmitterLayer layer];
18     emitter.frame = self.containerView.bounds;
19     [self.containerView.layer addSublayer:emitter];
20 
21     //configure emitter
22     emitter.renderMode = kCAEmitterLayerAdditive;
23     emitter.emitterPosition = CGPointMake(emitter.frame.size.width / 2.0, emitter.frame.size.height / 2.0);
24 
25     //create a particle template
26     CAEmitterCell *cell = [[CAEmitterCell alloc] init];
27     cell.contents = (__bridge id)[UIImage imageNamed:@"Spark.png"].CGImage;
28     cell.birthRate = 150;
29     cell.lifetime = 5.0;
30     cell.color = [UIColor colorWithRed:1 green:0.5 blue:0.1 alpha:1.0].CGColor;
31     cell.alphaSpeed = -0.4;
32     cell.velocity = 50;
33     cell.velocityRange = 50;
34     cell.emissionRange = M_PI * 2.0;
35 
36     //add particle template to emitter
37     emitter.emitterCells = @[cell];
38 }
39 @end

View Code

 

图6.13 火焰爆炸效果

CAEMitterCell的性能基本上可以分成三种:

  • 那种粒子的某一属性的伊始值。比如,color性能指定了一个得以勾兑图片内容颜色的混合色。在示范中,大家将它设置为桔色。
  • 事例某一性质的更动范围。比如emissionRange特性的值是2π,那表示例子可以从360度即兴地方反射出来。假使指定一个小一些的值,就可以创造出一个圆锥形
  • 指定值在时刻线上的变化。比如,在示范中,大家将alphaSpeed设置为-0.4,就是说例子的透明度每过一秒就是削减0.4,那样就有发出出去之后逐步小时的听从。

CAEmitterLayer的习性它自己主宰着方方面面例子系统的职责和形态。一些性质比如birthRatelifetimecelocity,这个属性在CAEmitterCell中也有。这么些属性会以相乘的不二法门效果在一块儿,那样您就足以用一个值来增加速度或者增添整个例子系统。其余值得提到的特性有以下这么些:

  • preservesDepth,是还是不是将3D事例系统平面化到一个图层(默许值)或者可以在3D空间中混合其余的图层
  • renderMode,控制着在视觉上粒子图片是何许混合的。你可能早已注意到了演示中大家把它设置为kCAEmitterLayerAdditive,它完结了如此一个作用:合并例子重叠部分的亮度使得看上去更亮。假设大家把它设置为默许的kCAEmitterLayerUnordered,效果就没那么难堪了(见图6.14).

 

2018正版葡京赌侠诗 3

 

相关文章