技術是條長而遠的路,只有不斷學習豐富本身的技能才能讓本身行走在路上!git
CAEmitterCell: CAEmitterCell是粒子發射系統裏的粒子,用CAEmitterCell來定義你所須要的粒子的樣式,圖片,顏色,方向,運動,縮放比例和生命週期等等。swift
屬性名 | 做用 |
---|---|
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 | 生命週期範圍 lifetime= lifetime(+/-) lifetimeRange |
magnificationFilter | 增長本身的大小 |
minificatonFilter | 減少本身的大小 |
minificationFilterBias | 減少大小的因子 |
name | 粒子的名字 |
redRange | 一個粒子的顏色red 能改變的範圍 |
redSpeed | 粒子red在生命週期內的改變速度 |
scale | 縮放比例 |
scaleRange | 縮放比例範圍 |
scaleSpeed | 縮放比例速度 |
spin | 子旋轉角度 |
spinrange | 子旋轉角度範圍 |
velocity | 速度 |
velocityRange | 速度範圍 |
xAcceleration | 粒子x方向的加速度份量 |
yAcceleration | 粒子y方向的加速度份量 |
zAcceleration | 粒子z方向的加速度份量 |
代碼片斷數組
let explosionCell = CAEmitterCell()
explosionCell.name = "explosion" explosionCell.alphaRange = 0.10 explosionCell.alphaSpeed = -1.0 explosionCell.lifetime = 0.7 explosionCell.lifetimeRange = 0.3 explosionCell.birthRate = 0 explosionCell.velocity = 40.00 explosionCell.velocityRange = 10.00 explosionCell.scale = 0.03 explosionCell.scaleRange = 0.02 explosionCell.contents = UIImage(named: "Sparkle")?.CGImage
CAEmitterLayer :CAEmitterLayer類提供了一個粒子發射器系統爲核心的動畫。這些粒子是由CAEmitterCell組成的實例,至關於一個管理者,來管理 CAEmitterCell的發射的一些細節,好比發射的位置,發射形狀等等。學習
屬性名 | 作用 |
---|---|
emitterPosition | 發射位置 |
emitterSize | 發射源的大小 |
emitterMode | 發射模式 |
emitterShape | 發射源的形狀 |
renderMode | 渲染模式 |
birthRate | 粒子產生係數,默認1.0 |
emitterCells | 裝着CAEmitterCell對象的數組,被用於把粒子投放到layer上 |
emitterDepth | 決定粒子形狀的深度聯繫 |
emitterZposition | 發射源的z座標位置 |
lifetime | 粒子生命週期 |
scale | 粒子的縮放比例 |
seed | 用於初始化隨機數產生的種子 |
spin | 自旋轉速度 |
velocity | 粒子速度 |
代碼片斷動畫
explosionLayer = CAEmitterLayer()
explosionLayer.name = "emitterLayer" explosionLayer.emitterShape = kCAEmitterLayerCircle; explosionLayer.emitterMode = kCAEmitterLayerOutline; explosionLayer.emitterSize = CGSizeMake(10, 0); explosionLayer.emitterCells = [explosionCell] explosionLayer.renderMode = kCAEmitterLayerOldestFirst; explosionLayer.masksToBounds = false explosionLayer.position = CGPointMake(self.frame.size.width/2.0, self.frame.size.height/2.0); explosionLayer.zPosition = -1; layer.addSublayer(explosionLayer)