0
我正在尝试设置CAEmitter。所有这些都有效,但我想在一秒钟之后将birthRate更改为零,以便动画停止并且不会产生新的粒子。这里是我目前的代码:无法更改CAEmitter的属性SWIFT
import PlaygroundSupport
import UIKit
let view = UIView(frame: CGRect(x: 0, y: 0, width: 500, height: 500))
let emitterLayer = CAEmitterLayer()
func degreesToRadians(degrees: Double) -> CGFloat {
return CGFloat(degrees * M_PI/180.0)
}
emitterLayer.emitterPosition = CGPoint(x: 320, y: 150)
let cell = CAEmitterCell()
cell.birthRate = 100
cell.lifetime = 1
cell.velocity = 300
cell.scale = 0.1
cell.contents = #imageLiteral(resourceName: "Lock copy.png").cgImage
let zeroDegreesInRadians = degreesToRadians(degrees: 0.0)
cell.spin = degreesToRadians(degrees: 130.0)
cell.spinRange = zeroDegreesInRadians
cell.emissionRange = degreesToRadians(degrees: 100)
cell.xAcceleration = -800.0
cell.yAcceleration = 1000.0
emitterLayer.emitterCells = [cell]
let delayTime = DispatchTime.now() + Double(Int64(1.0 * Double(NSEC_PER_SEC)))/Double(NSEC_PER_SEC)
DispatchQueue.main.asyncAfter(deadline: delayTime, execute:{
cell.birthRate = 0
})
view.layer.addSublayer(emitterLayer)
let page = PlaygroundPage.current
page.needsIndefiniteExecution = true
page.liveView = view
我看不到任何效果,为什么我的代码不工作?另外我将如何添加一个CABasicAnimation来改变属性。 CAEmitterCell没有像.add(anim: CAAnimation, forKey: String)
这样的方法。它会被添加到图层吗? 感谢您的帮助。
如何使用定时器呢?每次计时器启动时,您可以减少一定的出生率 – JoRa
为什么我的代码不会一次性降低出生率? – Lenny1357
你的代码是否会降低实际被调用的出生率?你初始化'delayTime'的方式似乎很简单。 –