我有一个 CAEmitterCell 用于为我的游戏发出连续的背景。当玩家“死”时,我希望背景减速停止,所以我这样做了:
- (void)stopAllEmitters:(NSTimeInterval)duration
{
for(CAEmitterLayer* layer in self.emitters)
{
CAEmitterCell* e = layer.emitterCells[0];
CABasicAnimation* anim = [CABasicAnimation animationWithKeyPath:@"emitterCells.emitter.velocity"];
anim.fromValue = @(e.velocity);
anim.toValue = @(0.0);
anim.duration = duration;
anim.fillMode = kCAFillModeForwards;
anim.removedOnCompletion = NO;
[layer addAnimation:anim forKey:@"emitterAnim"];
}
}
请注意,所有的emitterCells 都被命名@"emitter"
,并且每一层只有一个emitterCell。
这确实适用于所有未来生成的发射器对象,但不适用于我调用它时已经生成的发射器对象。
有没有办法将速度动画应用于已经在屏幕上的发射器对象?