CAEmitterLayer實現烟花動畫效果

2021-09-16 21:38:20 字數 3211 閱讀 9784

效果:

caemitterlayer是calayer的乙個子類,和caemittercell一起使用可以創造出多樣的動畫效果。

caemitterlayer的屬性:

/*@inte***ce caemitterlayer : calayer

--粒子的陣列 把設定好的粒子放入陣列設定到layer上

@property(nullable, copy) nsarray> emittercells;

--layer生產率 與cell的birthrate相乘就是粒子的生產率

@property float birthrate;

--layer存在時間 同上

@property float lifetime;

--發射源中心點的位置

@property cgpoint emitterposition;

--z軸上的位置

@property cgfloat emitterzposition;

--是發射源的大小 並不是layer的大小

@property cgsize emittersize;

--不清楚是什麼效果

@property cgfloat emitterdepth;

--發射源的形狀 有圓形 方形 線型等

@property(copy) nsstring *emittershape;

--發散形式 「layerpoints」是指發射粒子的位置在發射源的關鍵點上

如方形發射源的四個角點 圓形發射源的中心點

「outline」就是指例子發射的位置位於發射源的邊框

「su***ce」即是表面 「volume」暫時不清楚

@property(copy) nsstring *emittermode;

--描繪模式 「unordered」不規律的 增加了立體感

「oldestfirst」先生成的在上 「oldestlast」反之

「backtofront」根據z軸上的位置進行描繪 「additive」發射源的多種粒子進行混合

@property(copy) nsstring *rendermode;

--是否展示在z軸上的效果 把圖層進行3d變形如沿y軸旋轉90度 會有很明顯的立體效果

@property bool preservesdepth;

--發射速度 和cell的速度屬性一起決定了粒子的速度 猜測粒子的速度是兩者的乘積

而且和cell的速度屬性不同 這個屬性可以為負

為負的時候發散方向是向反方向的 為正時是向指定方向的

@property float velocity;

-- 縮放大小 和速度相同 粒子的scale值是兩者相乘 也可以為負 為負時效果不清楚

@property float scale;

-- 同上面的兩個屬性

@property float spin;

-- 可能是給圖層中需要用到的隨機數設定種子

@property unsigned int seed;*/

caemittercell的部分屬性

/*--是否允許被繪製出來

@property(getter=isenabled) bool enabled;

--生成速率

@property float birthrate;

--生存週期

@property float lifetime;

--生存週期的絕對值的偏移量的最大值 。。。

@property float lifetimerange;

--z軸方向上的發射角度

@property cgfloat emissionlatitude;

--在xy平面上的發射角度

@property cgfloat emissionlongitude;

--放射角度的偏移量

@property cgfloat emissionrange;

--放射速度

@property cgfloat velocity;

--速度偏移量

@property cgfloat velocityrange;

--在三個座標軸上的速度增量 可以做出類似重力 風吹的效果

@property cgfloat xacceleration;

@property cgfloat yacceleration;

@property cgfloat zacceleration;

--縮放數值

@property cgfloat scale;

--縮放數值的偏移量

@property cgfloat scalerange;

--縮放速度 不清楚怎麼設定 可能和velocity屬性有關係

@property cgfloat scalespeed;

--旋轉

@property cgfloat spin;

--旋轉的偏移量

@property cgfloat spinrange;

--設定cell的顏色 content的顏色會影響實際顏色

@property(nullable) cgcolorref color;

--設定三原色和透明度的值 偏移值 0-1

@property float redrange;

@property float greenrange;

@property float bluerange;

@property float alpharange;

--變色速率

@property float redspeed;

@property float greenspeed;

@property float bluespeed;

@property float alphaspeed;

--cell的內容 一般是uiimage

@property(nullable, strong) id contents;

--內容範圍

@property cgrect contentsrect;

--內容縮放

@property cgfloat contentsscale;

*/caemitterlayer和caemittercell有眾多屬性,所以就有更多的搭配,從而實現多種多樣的動畫效果。

烟花效果只是其中一種:

烟花的兩個:

烟花效果,效果實現**如下 :

你也可以根據自己的實際開發需要進行引數的調整

CAEmitterLayer 粒子效果

caemitterlayer執行在gpu上,不消耗cpu。建立出layer caemitterlayer emitterlayer caemitterlayer layer 顯示邊框 emitterlayer.borderwidth 1.f emitterlayer.bordercolor uico...

CAEmitterLayer屬性介紹

在ios 5中,蘋果引入了乙個新的calayer子類叫做caemitterlayer。caemitterlayer是乙個高效能的粒子引擎,被用來建立實時例子動畫如 煙霧,火,雨等等這些效果.caemitterlayer 粒子發射器 屬性 emitterposition 發射位置 cgpoint em...

CAEmitterLayer實現粒子效果

caemitterlayer實現粒子效果 caemitterlayer 在ios 5中,蘋果引入了乙個新的 calayer 子類叫做 caemitterlayer caemitterlayer 是乙個高效能的粒子引擎,被用來建立實時例子動畫如 煙霧,火,雨等等這些效果。caemitterlayer ...