CAEmitterCell不尊重持续时间值

我有一个发射器,我想在2秒后结束,但我不能让它停止运行!

我的代码如下:

// Emitter Layer // emitter = [CAEmitterLayer layer]; emitter.emitterSize = CGSizeMake(20, 20); emitter.renderMode = @"additive"; emitter.emitterMode = @"points"; emitter.emitterShape = @"rectangle"; emitter.emitterPosition = CGPointMake(310, 230); //emitter.duration = 2; // setting duration on the emitterLayer prevents anything from firing it seems // Emitter Cells // // 'New Emitter' cell configuration newEmitter = [CAEmitterCell emitterCell]; newEmitter.scaleSpeed = 7; newEmitter.lifetime = 2.481715; //newEmitter.duration = 2; // I would expect this to stop the emitter after 2 seconds, but it doesn't! newEmitter.velocity = 332.3636968085106; newEmitter.contents = newemitterImg; newEmitter.name = @"New Emitter"; newEmitter.scaleRange = 4.178236607142859; newEmitter.lifetimeRange = 1.6; newEmitter.greenRange = -2.775558e-17; newEmitter.birthRate = 40; newEmitter.emissionRange = -6.283185306666667; newEmitter.scale = 0; // Emitter Cell Chains // emitter.emitterCells = [NSArray arrayWithObjects:newEmitter, nil]; 

尽管作为iOS的一部分已经存在了大约2年,但似乎很少有关于此的信息!

您可以使用计时器和停止发射器生成新粒子的方法来执行此操作…

在现有代码的末尾添加:

  [newEmitter setName:@"newEmitter"]; [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(stopEmitter:) userInfo:nil repeats:NO]; 

然后制作一个stopEmitter:方法……

  - (void) stopEmitter:(NSTimer*)timer { [emitter setValue:@0 forKeyPath:@"emitterCells.newEmitter.birthRate"]; }