ios - CAEmitterLayer - 从边界向内发射
问题描述
我有一个粒子动画:
private func createParticles() {
// setup emitter
let emitter = CAEmitterLayer()
emitter.emitterSize = self.bounds.size
emitter.emitterShape = .rectangle
emitter.emitterMode = .surface
emitter.emitterDepth = 1.0
emitter.renderMode = .oldestFirst
emitter.emitterPosition = CGPoint(x: bounds.width / 2, y: bounds.height / 2)
layer.addSublayer(emitter)
let particle1 = createParticle(rate: 1000, alpha: 1, scale: 0.2, velocity: 25)
let particle2 = createParticle(rate: 200, alpha: 0.5, scale: 0.1, velocity: 10)
let particle3 = createParticle(rate: 200, alpha: 1, scale: 0.1, velocity: 5)
emitter.emitterCells = [particle1, particle2, particle3]
}
func createParticle(rate: Float, alpha: CGFloat, scale: CGFloat, velocity: CGFloat) -> CAEmitterCell {
let cell = CAEmitterCell()
cell.contents = UIImage(named: "Spark")?.cgImage
cell.birthRate = rate
cell.lifetime = 2
cell.color = UIColor(white: 1, alpha: alpha).cgColor
cell.alphaSpeed = -1/cell.lifetime
cell.scale = scale
cell.scaleRange = 0.2
cell.alphaRange = 0.2
cell.velocity = velocity
cell.velocityRange = velocity * 0.3
cell.emissionRange = 0.4
return cell
}
我希望粒子从层的边界发射并向内发射。这可能吗?
解决方案
推荐阅读
- python - 在 Python websocket 服务器中在哪里提供 ssl 证书文件的路径
- sql-server - 如何查找子查询字符串包含主查询字符串的行?
- curl - Curl 不显示对 HTTP 请求的响应
- go - 使用反射和动态类型附加到 go lang 切片
- android - Rails 和 React Native 与 ios/android 设备之间的网络错误
- haskell - 在 Haskell 中输入两个枚举字段
- excel - Excel VBA 中的复制粘贴
- windows - CPAN“。” 未被识别为内部或外部命令 - Windows 10
- sql-server - 计算算术字符串产生算术溢出错误
- c# - Unity - DontDestroyOnLoad() 还是公共静态变量?