6

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

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 尊重我对其属性所做的更改?

4

2 回答 2

7

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

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

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

[self.cell setName:@"cell"];
于 2013-10-24T18:47:12.177 回答
0

当你self.emitter用一个新的单元格初始化时,该对象将被保留,所以..当你cell.yAcceleration用一个计时器改变时,单元格self.emitter不能改变,self.cell.yAcceleration已经改变了。所以,你应该使用的关键路径self.emitter

于 2014-08-27T08:38:17.603 回答