我试图做到这一点,所以我的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
}
答案 0 :(得分:1)
这只是细胞的大小,速度,出生率和寿命的组合。这是无聊的完全独立的单元格流:
let cell = CAEmitterCell()
cell.birthRate = 5
cell.lifetime = 1
cell.velocity = 100
另一方面,您的出生速度非常快,寿命也很长:
cell.birthRate = 0.2
cell.lifetime = 100
答案 1 :(得分:1)
这可以通过正确设置<select class="form-control" data-bind="options: baseViewModel.filtersViewModel, optionsCaption: 'Choose...', optionsText: function(self) { return self.Name }, value: baseViewModel.baseFilter(), optionsValue: 'Value', event: { change: function() { console.log('test'); applyFilter(baseViewModel.baseFilter()); return true; } }">
<option value="">Choose...</option>
<option value="{'sort':[]}">water group</option>
</select>
和bithRate
来实现。 lifetime
定义为每秒创建的对象数,Birthrate
是对象存活的秒数。
这样的组合效果很好:
lifetime
结果