代码之家  ›  专栏  ›  技术社区  ›  soleil

发射开始后更改CAEmitterLayer的CAEmitter单元财产

  •  6
  • soleil  · 技术社区  · 11 年前

    当我第一次设置发射器时,我可以执行以下操作:

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

    2 回复  |  直到 11 年前
        1
  •  7
  •   soleil    11 年前

    这并不明显,但解决方案如下:

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

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

    [self.cell setName:@"cell"];
    
        2
  •  0
  •   Gwenc37 Anand Shukla    10 年前

    当您初始化 self.emitter 有了新的单元格,对象将被保留,所以。。当你改变 cell.yAcceleration 带有计时器 自拍发射器 不能改变, self.cell.yAcceleration 已经更改。因此,您应该使用 自拍发射器 .

    推荐文章