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...