日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

iOS之CALayer的CAEmitterLayer实现“红包雨”效果

發布時間:2024/5/21 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iOS之CALayer的CAEmitterLayer实现“红包雨”效果 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

CAEmitterLayer(粒子發生器)

一、基本簡介
  • CAEmitterLayer是CALayer的一個子類,和CAEmitterCell一起使用可以創造出多樣的動畫效果。
  • CAEmitterLayer主要用于實現基于Core Animation的粒子發生器系統。
  • 在粒子系統中,CAEmitterLayer負責發射粒子(當然粒子也可以發射粒子),而這些所謂的粒子,就是CAEmitterCell,我們可以將CAEmitterLayer比作是CAEmitterCell的容器,它會按照你的設置來以不同的樣式不斷產生粒子,也就是CAEmitterCell。
  • CAEmitterLayer決定了粒子從什么樣的幾何特性上發射出來,這個幾何特性包括了位置,形狀,大小。另外還有一些渲染相關的特性。另外的一些屬性是CAEmitterLayer和CAEmiiterCell都有的,CAEmitterLayer的這些屬性會作為CAEmitterCell相同屬性的系數。
  • CAEmitterCell則決定了粒子自身的一些特征,例如速度,加速度,發射的范圍,顏色等等。這些屬性大多是以“中間值”配合一個范圍值的方式來表示的。
二、CAEmitterLayer的屬性

CAEmitterLayer類提供了一個粒子發射器系統為核心的動畫。這些粒子是由CAEmitterCell組成的實例,它相當于一個管理者,來管理 CAEmitterCell的發射的一些細節,比如發射的位置,發射形狀等。

屬性作用
emitterPosition發射位置
emitterSize發射源的大小
emitterMode發射模式
emitterShape發射源的形狀
renderMode渲染模式
birthRate粒子產生系數,默認1.0
emitterCells裝著CAEmitterCell對象的數組,被用于把粒子投放到layer上
emitterDepth決定粒子形狀的深度聯系
emitterZposition發射源的z坐標位置
lifetime粒子生命周期
scale粒子的縮放比例
seed用于初始化隨機數產生的種子
spin自旋轉速度
velocity粒子速度
三、CAEmitterCell 的屬性

CAEmitterCell是粒子發射系統里的粒子,用CAEmitterCell來定義你所需要的粒子的樣式,圖片,顏色,方向,運動,縮放比例和生命周期等。

屬性作用
alphaRange一個粒子的顏色alpha能改變的范圍
alphaSpeed粒子透明度在生命周期內的改變速度
birthrate每秒發射的粒子數量
blueRange一個粒子的顏色blue 能改變的范圍
blueSpeed粒子blue在生命周期內的改變速度
color粒子的顏色
contents是個CGImageRef的對象,既粒子要展現的圖片
contentsRect應該畫在contents里的子rectangle
emissionLatitude發射的z軸方向的角度
emissionLongitudex-y平面的發射方向
emissionRange周圍發射角度
emitterCells粒子發射的粒子的數組
enabled粒子是否被渲染
greenrange一個粒子的顏色green 能改變的范圍
greenSpeed粒子green在生命周期內的改變速度
lifetime生命周期
lifetimeRange生命周期范圍 lifetime= lifetime(+/-) lifetimeRange
magnificationFilter增加自己的大小
minificatonFilter減小自己的大小
minificationFilterBias減小大小的因子
name粒子的名字
redRange一個粒子的顏色red 能改變的范圍
redSpeed粒子red在生命周期內的改變速度
scale縮放比例
scaleRange縮放比例范圍
scaleSpeed縮放比例速度
spin子旋轉角度
spinrange子旋轉角度范圍
velocity速度
velocityRange速度范圍
xAcceleration粒子x方向的加速度分量
yAcceleration粒子y方向的加速度分量
zAcceleration粒子z方向的加速度分量

“紅包雨”的實現

// 設置CAEmitterLayerself.rainLayer = [CAEmitterLayer layer];// 降落區域的方位self.rainLayer.frame = self.view.bounds;// 在背景圖上添加粒子圖層[self.view.layer addSublayer:self.rainLayer];// 發射形狀:線性self.rainLayer.emitterShape = kCAEmitterLayerLine;self.rainLayer.emitterMode = kCAEmitterLayerSurface;// 指定發射源的大小self.rainLayer.emitterSize = self.view.frame.size;// 指定發射源的位置self.rainLayer.emitterPosition = CGPointMake(self.view.bounds.size.width * 0.5, -10);// 配置cellCAEmitterCell * snowCell = [CAEmitterCell emitterCell];snowCell.contents = (id)[[UIImage imageNamed:@"hongbao.png"] CGImage];// 每秒多少個snowCell.birthRate = 1.0;// 存活時間snowCell.lifetime = 30;// 運動速度snowCell.speed = 2;// 初速度,因為動畫屬于落體效果,只需要設置它在y方向上的加速度snowCell.velocity = 10.f;// 初速度范圍snowCell.velocityRange = 10.f;// y軸方向的加速度snowCell.yAcceleration = 60;// 圖片縮放比例snowCell.scale = 0.05;snowCell.scaleRange = 0.f;// 開始動畫:添加到圖層上self.rainLayer.emitterCells = @[snowCell];
  • 效果展示

完整示例傳送門

CAEmitterLayer之實現“紅包雨”效果

總結

以上是生活随笔為你收集整理的iOS之CALayer的CAEmitterLayer实现“红包雨”效果的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。