CAEmitter顺利启动动画

时间:2013-10-12 00:40:18

标签: ios objective-c cocoa-touch caemitterlayer caemittercell

我正在尝试让CAEmitterLayer制作一种光剑动画。我希望从一个点出现一束光并停止。我的问题是我不能让动画的开头顺利发生。一旦我运行代码,就会看起来好像已经过了几秒而没有任何动画。

我尽可能地删除了代码,看看我是否能找到问题的根源,但即使最简单,它仍然会发生。这是我现在的代码示例,它仍然存在问题:

CAEmitterLayer *emitterLayer = [CAEmitterLayer layer];
emitterLayer.emitterPosition = CGPointMake(10, 10);

CAEmitterCell *emitterCell = [CAEmitterCell emitterCell];
emitterCell.contents = (id)[[UIImage imageNamed:@"LightParticle"] CGImage];

emitterCell.birthRate = 100;
emitterCell.lifetime = 10;
emitterCell.velocity = 10;

emitterLayer.emitterCells = @[emitterCell];
[self.view.layer addSublayer:emitterLayer];

我猜我一定错过了一些明显的东西,但我已经能够解决这个问题了好几天。

将birthRate设置为0将导致光束平滑消失,但将其设置回任何数字将导致它再次显示没有动画。

感谢您的帮助。

2 个答案:

答案 0 :(得分:14)

终于在这里找到了答案: iOS 7 CAEmitterLayer spawning particles inappropriately

这就是我所缺少的:

emitter.beginTime = CACurrentMediaTime();

答案 1 :(得分:0)

emitterCell.birthRate = 0.1;
emitterCell.lifetime = 10;
emitterCell.velocity = 10;

birthRate可能非常小但不是0。

然后改变比例速度

emitterCell.scale = 0.01;  emitterCell.scaleSpeed = 0.1;

希望这可以给你一些想法。