ios - 发射开始后更改 CAEmitterLayer 的 CAEmitterCell 属性

标签 ios particle-system caemitterlayer caemittercell

当我第一次设置发射器时,我可以这样做:

self.cell = [CAEmitterCell emitterCell];
self.cell.yAcceleration = 20;
...
self.emitter.emitterCells = [NSArray arrayWithObjects:self.cell,nil];

但是假设我创建了一个 5 秒后触发的计时器,我这样做了:

- (void)timerFired
{
    self.cell.yAcceleration = -10;

}

计时器触发,但 CAEmitterCell 的 yAcceleration 没有改变。或者至少屏幕上的粒子发射没有任何变化。我怎样才能让 CAEmitterCell 尊重我对其属性所做的更改?

最佳答案

这不是很明显,但这是解决方案:

[self.emitter setValue:[NSNumber numberWithFloat:-10.0]
               forKeyPath:@"emitterCells.cell.yAcceleration"];

其中“cell”是此处给出的名称:

[self.cell setName:@"cell"];

关于ios - 发射开始后更改 CAEmitterLayer 的 CAEmitterCell 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19573814/

相关文章:

iphone - 从应用程序用户那里存储 SQLite 文件的位置

ios - MvvmCross和UICollectionView如何将SelectedItem从VM绑定(bind)到View

ios - 切换 View Controller 时 uiview 重复

ios - 让粒子发射器轨迹跟随 spriteKit 中的手指路径

ios - CAEmitterLayer如何短时间重复发射

ios - UITableViewCell 的层在 heightForRowAt IndexPath 之后没有更新

c++ - 什么样的容器适合 "The Powder Toy"风格的沙箱?

c++ - 在不影响重力的情况下阻尼 Spring

ios - 根据动画方向旋转CAEmitterCell内容