<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # CAEmitterLayer 在iOS 5中,蘋果引入了一個新的`CALayer`子類叫做`CAEmitterLayer`。`CAEmitterLayer`是一個高性能的粒子引擎,被用來創建實時例子動畫如:煙霧,火,雨等等這些效果。 `CAEmitterLayer`看上去像是許多`CAEmitterCell`的容器,這些`CAEmitierCell`定義了一個例子效果。你將會為不同的例子效果定義一個或多個`CAEmitterCell`作為模版,同時`CAEmitterLayer`負責基于這些模版實例化一個粒子流。一個`CAEmitterCell`類似于一個`CALayer`:它有一個`contents`屬性可以定義為一個`CGImage`,另外還有一些可設置屬性控制著表現和行為。我們不會對這些屬性逐一進行詳細的描述,你們可以在`CAEmitterCell`類的頭文件中找到。 我們來舉個例子。我們將利用在一圓中發射不同速度和透明度的粒子創建一個火爆炸的效果。清單6.13包含了生成爆炸的代碼。圖6.13是運行結果 清單6.13 用`CAEmitterLayer`創建爆炸效果 ~~~ #import "ViewController.h" #import @interface ViewController () @property (nonatomic, weak) IBOutlet UIView *containerView; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; ? //create particle emitter layer CAEmitterLayer *emitter = [CAEmitterLayer layer]; emitter.frame = self.containerView.bounds; [self.containerView.layer addSublayer:emitter]; //configure emitter emitter.renderMode = kCAEmitterLayerAdditive; emitter.emitterPosition = CGPointMake(emitter.frame.size.width / 2.0, emitter.frame.size.height / 2.0); //create a particle template CAEmitterCell *cell = [[CAEmitterCell alloc] init]; cell.contents = (__bridge id)[UIImage imageNamed:@"Spark.png"].CGImage; cell.birthRate = 150; cell.lifetime = 5.0; cell.color = [UIColor colorWithRed:1 green:0.5 blue:0.1 alpha:1.0].CGColor; cell.alphaSpeed = -0.4; cell.velocity = 50; cell.velocityRange = 50; cell.emissionRange = M_PI * 2.0; //add particle template to emitter emitter.emitterCells = @[cell]; } @end ~~~ 圖6.13 火焰爆炸效果 `CAEMitterCell`的屬性基本上可以分為三種: * 這種粒子的某一屬性的初始值。比如,`color`屬性指定了一個可以混合圖片內容顏色的混合色。在示例中,我們將它設置為桔色。 * 例子某一屬性的變化范圍。比如`emissionRange`屬性的值是2π,這意味著例子可以從360度任意位置反射出來。如果指定一個小一些的值,就可以創造出一個圓錐形 * 指定值在時間線上的變化。比如,在示例中,我們將`alphaSpeed`設置為-0.4,就是說例子的透明度每過一秒就是減少0.4,這樣就有發射出去之后逐漸小時的效果。 `CAEmitterLayer`的屬性它自己控制著整個例子系統的位置和形狀。一些屬性比如`birthRate`,`lifetime`和`celocity`,這些屬性在`CAEmitterCell`中也有。這些屬性會以相乘的方式作用在一起,這樣你就可以用一個值來加速或者擴大整個例子系統。其他值得提到的屬性有以下這些: * `preservesDepth`,是否將3D例子系統平面化到一個圖層(默認值)或者可以在3D空間中混合其他的圖層 * `renderMode`,控制著在視覺上粒子圖片是如何混合的。你可能已經注意到了示例中我們把它設置為`kCAEmitterLayerAdditive`,它實現了這樣一個效果:合并例子重疊部分的亮度使得看上去更亮。如果我們把它設置為默認的`kCAEmitterLayerUnordered`,效果就沒那么好看了(見圖6.14). ![](https://box.kancloud.cn/2015-12-24_567bc20496e5b.png) 圖6.14 禁止混色之后的火焰粒子
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看