iphone - 改进/优化 CAEmitterLayer 动画的性能(沿路径发射?)

标签 iphone animation core-animation caemitterlayer

这是我迄今为止所获得的视频。请原谅不稳定,我的 MBP + QuickTime + Xcode 不是最好的。

http://www.youtube.com/watch?v=DGRwz7n3kNA

这对于我想要的东西来说是一个非常粗略的草案,但你可以明白我的想法。性能是最大的问题,但即使不考虑性能,我也在浪费 CPU/GPU 时间渲染/计算 UIImageView(看起来像恶魔 rune 的东西)后面的粒子。

有谁知道如何沿着路径发射粒子或更好的方法来在 View 后面获得发光动画?这是我设置动画的发射器 View 的片段:

emitter = (CAEmitterLayer*)self.layer;
CGSize size = self.frame.size;
[emitter setEmitterPosition:CGPointMake(size.width / 2.0f, size.height / 2.0f)];
[emitter setEmitterSize:CGSizeMake(size.width, size.height)];
[emitter setEmitterShape:kCAEmitterLayerCircle];
[emitter setRenderMode:kCAEmitterLayerAdditive];

CAEmitterCell *runeGlow = [CAEmitterCell emitterCell];
[runeGlow setColor:[[UIColor whiteColor] CGColor]];
[runeGlow setName:@"runeGlow"];
[runeGlow setBirthRate:4000.0f];
[runeGlow setVelocity:30.0f];
[runeGlow setLifetime:0.6f];
[runeGlow setEmissionRange:M_PI * 2.0f];
[runeGlow setContents:(id)[[UIImage imageNamed:@"burn.png"] CGImage]];

[emitter setEmitterCells:[NSArray arrayWithObject:runeGlow]];

最佳答案

您可以将发射器模式设置为仅在形状轮廓上发射粒子,如下所示

[emitter setEmitterMode:kCAEmitterLayerOutline];

(您可能已经注意到“音量”是默认值)

这可能会让您减少粒子数量,从而提高性能(因为您不必创建大量出现在圆圈后面的粒子)。

关于iphone - 改进/优化 CAEmitterLayer 动画的性能(沿路径发射?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11246453/

相关文章:

iphone - 拒绝等待开发者发布的应用程序

ios - 为什么 viewDidLayoutSubviews 会干扰动画?

带链接的 CSS 关键帧

ios - iPhone UILabel - 不间断空格

iphone - 4 英寸屏幕 IOS 应用程序中的黑色空间

objective-c - iOS 动画性能

iphone - 如何慢慢抚摸露出路径?

macos - 如何使用 Facebook Pop 制作图层仿射变换动画?

ios - 在代码中混合 Storyboard和约束

javascript - 为什么我的自定义伪动画与 jQuery 的原生动画功能不同步?