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

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注