IOS火焰效果插件

控制器繼承UIViewController
.m中代碼實(shí)現(xiàn)

Snip20160920_4.png
//
//  YSCFireViewController.m
//  動(dòng)畫(huà)
//
//  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 出生率,顧名思義沒(méi)有這個(gè)也就沒(méi)有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一樣,只是用來(lái)設(shè)置圖片
    fire.contents = (id)[[UIImage imageNamed:@"fire"] CGImage];
    //setName 這個(gè)是當(dāng)Cell存在caeEmitter 的emitterCells中用來(lái)辨認(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 周?chē)l(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:出生率,顧名思義沒(méi)有這個(gè)也就沒(méi)有CAEmitterCell,這個(gè)必須要設(shè)置,具體含義是每秒某個(gè)點(diǎn)產(chǎn)生的Cell數(shù)量;

2.lifetime:表示Cell的生命周期,既cell在屏幕上顯示多長(zhǎng)時(shí)間;lifetimeRange:生命周期范圍

3.contents:和CALayer一樣,只是用來(lái)設(shè)置圖片

4.name: 這個(gè)是當(dāng)Cell存在caeEmitter 的emitterCells中用來(lái)辨認(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;周?chē)l(fā)射角度;

23.emitterCells:粒子發(fā)射的粒子

24.alphaRange:  一個(gè)粒子的顏色透明度alpha能改變的范圍;

25.alphaSpeed:粒子透明度在生命周期內(nèi)的改變速度;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容