CAEmitterLayer 粒子效果

2021-07-03 17:30:27 字數 4667 閱讀 6999

caemitterlayer執行在gpu上,不消耗cpu。

//建立出layer

caemitterlayer *emitterlayer = [caemitterlayer layer];

//顯示邊框

emitterlayer.borderwidth = 1.f;

emitterlayer.bordercolor = [[uicolor redcolor] cgcolor];

//繫結尺寸

emitterlayer.frame = cgrectmake(100, 100, 100, 100);

//發射源的尺寸大小

// snowemitter.emittersize = cgsizemake(self.view.bounds.size.width * 20, 20);

//發射點

emitterlayer.emitterposition = cgpointmake(0, 0);

//發射模式

emitterlayer.emittermode = kcaemitterlayersu***ce;

//發射形狀

emitterlayer.emittershape = kcaemitterlayerline;

// emitterlayer.maskstobounds = yes; 不能超出邊框

/*snowemitter.shadowopacity = 1.0;

snowemitter.shadowradius = 0.0;

snowemitter.shadowoffset = cgsizemake(0.0, 1.0);

//粒子邊緣的顏色

snowemitter.shadowcolor = [[uicolor redcolor] cgcolor];

snowemitter.emittercells = [nsarray arraywithobjects:snowflake,snowflake1,nil];

[self.view.layer insertsublayer:snowemitter atindex:0];

*/ //新增layer

[self.view.layer addsublayer:emitterlayer];

//建立粒子

caemittercell *cell = [caemittercell emittercell];

//粒子產生率,太大的話成黑色塊了,

cell.birthrate = 1.f;

//粒子生命週期,太小的話,出生就死掉了

cell.lifetime = 120.f;

//速度值

cell.velocity = 10;

//速度值的微調值7-13

cell.velocityrange = 3.f;

//y軸加速度,相當於有重力了

cell.yacceleration = 2.f;

//設定粒子顏色

cell.color = [uicolor blackcolor].cgcolor;

//發射角度

cell.emissionrange = 3.1f * m_1_pi;

//子旋轉角度範圍

// snowflake.spinrange = 0.25 * m_pi;

//設定

cell.contents = (__bridge id)([uiimage imagenamed:@"snow"].cgimage);

//讓caemitterlayer與caemittercell產生關聯

emitterlayer.emittercells = @[cell];

下面是 caemitterlayer和caemittercell 的一些屬性:

caemitterlayer

提供了乙個基於 core animation 的粒子 發 射系 統 ,粒子用 caemittercell 來初始化。 粒子畫在背景 層 盒 邊 界上

properties:

birthrate: 粒子 產 生係數,默 認 1.0 ;

emittercells: 裝著 caemittercell 對 象的數 組 ,被用於把粒子投放到 layer 上;

emitterdepth: 決定粒子形狀的深度 聯 系: emitter shape

emittermode: 發 射模式

- nsstring * const kcaemitterlayerpoints;

- nsstring * const kcaemitterlayeroutline;

- nsstring * const kcaemitterlayersu***ce;

- nsstring * const kcaemitterlayervolume;

emitterposition: 發 射位置

emittershape: 發 射源的形狀:

- nsstring * const kcaemitterlayerpoint;

- nsstring * const kcaemitterlayerline;

- nsstring * const kcaemitterlayerrectangle;

- nsstring * const kcaemitterlayercuboid;

- nsstring * const kcaemitterlayercircle;

- nsstring * const kcaemitterlayersphere;

emittersize: 發 射源的尺寸大;

emitterzposition: 發 射源的 z 坐 標 位置;

lifetime: 粒子生命週期

preservesdepth: 不是多很清楚(粒子是平展在 層 上)

rendermode: 渲染模式:

- nsstring * const kcaemitterlayerunordered;

- nsstring * const kcaemitterlayeroldestfirst;

- nsstring * const kcaemitterlayeroldestlast;

- nsstring * const kcaemitterlayerbacktofront;

- nsstring * const kcaemitterlayeradditive;

scale: 粒子的縮放比例:

seed :用於初始化隨機數產生的種子

spin: 自旋轉速度

velocity :粒子速度

caemittercell

caemittercell 類 代從從 caemitterlayer 射出的粒子; emitter cell 定 義 了粒子 發 射的方向。

alpharange: 乙個粒子的 顏 色 alpha 能改 變 的範 圍 ;

alphaspeed: 粒子透明度在生命週期內的改變速度;

birthrate :粒子引數的速度乘數因子;

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 :子旋轉角度範圍

style :不是很清楚:

velocity :速度

velocityrange :速度範圍

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

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

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

class methods

defaulevalueforkey: 更具健 獲 得 值 ;

emittercell :初始化方法

shouldarchivevalueforkey: 是否 歸 檔莫 鍵值

CAEmitterLayer屬性介紹

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

CAEmitterLayer實現粒子效果

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

CAEmitterLayer實現烟花動畫效果

效果 caemitterlayer是calayer的乙個子類,和caemittercell一起使用可以創造出多樣的動畫效果。caemitterlayer的屬性 inte ce caemitterlayer calayer 粒子的陣列 把設定好的粒子放入陣列設定到layer上 property nul...