控制器繼承UIViewController
.m中代碼實(shí)現(xiàn)
//
// YSCFireViewController.m
// 動(dòng)畫
//
// Created by 韓燕輝 on 16/9/20.
// Copyright ? 2016年 hyh. All rights reserved.
//
#import "YSCFireViewController.h"
@interface YSCFireViewController()
{
CAEmitterLayer * _fireEmitter;
}
@end
@implementation YSCFireViewController
- (void)viewDidLoad
{
self.view.backgroundColor = [UIColor whiteColor];
//設(shè)置發(fā)射器
_fireEmitter = [[CAEmitterLayer alloc] init];
//發(fā)射器的位置具壮,在底部中間
_fireEmitter.emitterPosition = CGPointMake(self.view.frame.size.width/2, self.view.frame.size.height - 20);
_fireEmitter.emitterSize = CGSizeMake(self.view.frame.size.width - 100, 20);
_fireEmitter.renderMode = kCAEmitterLayerAdditive;
//發(fā)射單元
//火焰
CAEmitterCell *fire = [CAEmitterCell emitterCell];
//birthRate 出生率遵倦,顧名思義沒有這個(gè)也就沒有CAEmitterCell离斩,這個(gè)必須要設(shè)置,具體含義是每秒某個(gè)點(diǎn)產(chǎn)生的Cell數(shù)量
fire.birthRate = 800;
//lifetime表示Cell的生命周期,既cell在屏幕上顯示多長(zhǎng)時(shí)間;
fire.lifetime = 2.0;
//lifetimeRange:生命周期范圍
fire.lifetimeRange = 1.5;
fire.color = [[UIColor colorWithRed:0.8 green:0.4 blue:0.2 alpha:0.1] CGColor];
//contents 和CALayer一樣,只是用來設(shè)置圖片
fire.contents = (id)[[UIImage imageNamed:@"fire"] CGImage];
//setName 這個(gè)是當(dāng)Cell存在caeEmitter 的emitterCells中用來辨認(rèn)的到腥。用到setValue forKeyPath比較有用
[fire setName:@"fire"];
//velocity 速度
fire.velocity = 160;
//velocityRange 速度范圍
fire.velocityRange = 80;
//emissionLongitude x-y平面的發(fā)射方向
fire.emissionLongitude = M_PI+M_PI_2;
//emissionRange 周圍發(fā)射角度
fire.emissionRange = M_PI_2;
//alphaSpeed 粒子透明度在生命周期內(nèi)的改變速度
fire.alphaSpeed = -0.05;
//煙霧
CAEmitterCell *smoke = [CAEmitterCell emitterCell];
smoke.birthRate = 400;
smoke.lifetime = 3.0;
smoke.lifetimeRange = 1.5;
smoke.color = [[UIColor colorWithRed:1 green:1 blue:1 alpha:0.05] CGColor];
smoke.contents = (id)[[UIImage imageNamed:@"fire"] CGImage];
[smoke setName:@"smoke"];
smoke.velocity = 250;
smoke.velocityRange = 100;
smoke.emissionLongitude = M_PI + M_PI_2;
smoke.emissionRange = M_PI_2;
smoke.alphaSpeed = - 0.05;
_fireEmitter.emitterCells = [NSArray arrayWithObjects:fire,nil];
[self.view.layer addSublayer:_fireEmitter];
}
@end
附帶的也記錄了CAEmitterCell幾個(gè)重要屬性
1.birthRate:出生率,顧名思義沒有這個(gè)也就沒有CAEmitterCell蔚袍,這個(gè)必須要設(shè)置乡范,具體含義是每秒某個(gè)點(diǎn)產(chǎn)生的Cell數(shù)量;
2.lifetime:表示Cell的生命周期啤咽,既cell在屏幕上顯示多長(zhǎng)時(shí)間晋辆;lifetimeRange:生命周期范圍
3.contents:和CALayer一樣,只是用來設(shè)置圖片
4.name: 這個(gè)是當(dāng)Cell存在caeEmitter 的emitterCells中用來辨認(rèn)的宇整。用到setValue forKeyPath比較有用瓶佳;
5.velocity:速度;
6.velocityRange:速度范圍鳞青;
7.xAcceleration:粒子x方向的加速度分量霸饲;
8.yAcceleration:粒子y方向的加速度分量为朋;
9.zAcceleration:粒子z方向的加速度分量;
10.scale:縮放比例厚脉;
11.scaleRange:縮放比例范圍习寸;
12.scaleSpeed:縮放比例速度;
13.spin:自旋轉(zhuǎn)角度傻工;
14.spinRange:自旋轉(zhuǎn)角度范圍霞溪;
15.contentsRect:
16.contentsScale:
17.minificationFilter:減小自己的大小中捆;
18.minificationFilterBias:減小大小的因子鸯匹;
19.enabled:粒子是否被渲染;
20.emissionLatitude:發(fā)射的z軸方向的角度轨香;
21.emissionLongitude:x-y平面的發(fā)射方向忽你;
22.emissionRange幼东;周圍發(fā)射角度臂容;
23.emitterCells:粒子發(fā)射的粒子
24.alphaRange: 一個(gè)粒子的顏色透明度alpha能改變的范圍;
25.alphaSpeed:粒子透明度在生命周期內(nèi)的改變速度根蟹;