gpt4 book ai didi

ios - 如何让 CAEmitterLayer 一次只生成一个单元格 swift 4

转载 作者:搜寻专家 更新时间:2023-11-01 06:26:19 24 4
gpt4 key购买 nike

我正在努力使我的 CAEmitterLayer 对象一次只生成一个单元格。一旦细胞生命周期到期,我想产生下一个等等。这样做的原因是因为它们不断重叠导致它看起来很糟糕。

我尝试了 apples 文档,但找不到任何有用的东西。 https://developer.apple.com/documentation/quartzcore/caemitterlayer

func setUpEmitter(){
let emitter = CAEmitterLayer()
emitter.emitterPosition = CGPoint(x: view.frame.width / 2, y: 0)
emitter.emitterSize = CGSize(width: view.frame.width, height: 2)
emitter.emitterShape = CAEmitterLayerEmitterShape.line
emitter.emitterCells = generateEmitterCells()
view.layer.insertSublayer(emitter, at: 0)
// TutorialView.layer.addSublayer(emitter)

}

func generateEmitterCells() -> [CAEmitterCell]{
var cells = [CAEmitterCell]()

let cell = CAEmitterCell()
cell.contents = UIImage(named: "startVCversion3")!.cgImage
cell.birthRate = 0.2
cell.lifetime = 100
cell.velocity = CGFloat(55)
cell.emissionLongitude = (180 * (.pi/180))
cell.emissionRange = (45 * (.pi/180))
cell.scale = 1
cell.scaleRange = 1

cells.append(cell)
return cells
}

最佳答案

这可以通过适当设置 bithRatelifetime 来实现。 Birthrate 定义为每秒创建的对象数,lifetime 是对象存活的秒数。

像这样的组合效果很好:

func generateEmitterCells() -> [CAEmitterCell]{
var cells = [CAEmitterCell]()
let cell = CAEmitterCell()
cell.contents = UIImage(named: "Circle@3x")!.cgImage
cell.birthRate = 0.5
cell.lifetime = 2
cell.velocity = CGFloat(55)
cell.emissionLongitude = (180 * (.pi/180))
cell.emissionRange = (45 * (.pi/180))
cell.scale = 1
cell.scaleRange = 1

cells.append(cell)
return cells
}

结果

enter image description here

关于ios - 如何让 CAEmitterLayer 一次只生成一个单元格 swift 4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54027217/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com