使用 CAEmitterLayer 围绕圆形或 CGPath 绘制粒子

Posted

技术标签:

【中文标题】使用 CAEmitterLayer 围绕圆形或 CGPath 绘制粒子【英文标题】:use CAEmitterLayer to draw particles around a circle or a CGPath 【发布时间】:2012-01-07 23:12:40 【问题描述】:

我正在尝试使用 ios 5 的粒子系统(CAEmitterLayer 和 CAEmitterCell)围绕一个圆圈(或者更好的是 CGPath)绘制粒子,但我不知道该怎么做。我能做的最好的就是做一个弧(通过修改 CAEmitterCell 的 yAcceleration 属性),但我不能做一个完整的圆。当然,我可以做多个圆弧来模拟一个圆,但是“结”非常明显。另外,我不想使用蒙版,因为看起来边缘的粒子被裁剪了。任何想法如何做到这一点?

【问题讨论】:

【参考方案1】:

您可以使用 CAKeyframeAnimation 为emitterPosition 设置动画:

CAKeyframeAnimation *particleAnimation = [CAKeyframeAnimation animationWithKeyPath:@"emitterPosition"];
[particleAnimation setPath:yourPath];
[particleAnimation setDuration:1.0];
[particleAnimation setCalculationMode:kCAAnimationPaced];
[yourEmitterLayer addAnimation:particleAnimation forKey:@"yourAnimation"]; 

【讨论】:

您好,您如何使用 CAEmitterCell ?【参考方案2】:

你想使用particleEmitter.emitterShape = kCAEmitterLayerCircle

http://developer.apple.com/library/mac/#documentation/GraphicsImaging/Reference/CAEmitterLayer_class/Reference/Reference.html

【讨论】:

【参考方案3】:
yourEmitter.emitterShape = kCAEmitterLayerCircle;
yourEmitter.emitterMode = kCAEmitterLayerOutline;

【讨论】:

以上是关于使用 CAEmitterLayer 围绕圆形或 CGPath 绘制粒子的主要内容,如果未能解决你的问题,请参考以下文章

CAEmitterLayer

iOS之CAEmitterLayer粒子引擎

CAEmitterCell 和 CAEmitterLayer具体解释

iOS 使用 CAEmitterLayer 创建落叶动画

如何在MapKit上绘制围绕多个注释/坐标的圆形叠加?

CAEmitterLayer 的使用