【问题标题】:Improving/Optimizing performance of CAEmitterLayer animation (emit along path?)改进/优化 CAEmitterLayer 动画的性能(沿路径发射?)
【发布时间】:2012-07-20 15:28:15
【问题描述】:

这是我到目前为止所获得的视频。恕我直言,我的 MBP + QuickTime + Xcode 不是最好的。

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

这是我想要的一个非常粗略的草稿,但你可以理解。性能是最大的问题,但即使是性能,我也在浪费 CPU/GPU 时间渲染/计算粒子,这些粒子隐藏我的 UIImageView(看起来像恶魔的符文)。

有没有人知道如何沿着路径发射粒子或更好的方法来获得视图后面的发光动画?这是设置动画的发射器视图的 sn-p:

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]];

【问题讨论】:

    标签: iphone animation core-animation caemitterlayer


    【解决方案1】:

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

    [emitter setEmitterMode:kCAEmitterLayerOutline];
    

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

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

    【讨论】:

    • 另外,kCAEmitterLayerAdditive 可能很昂贵,放弃它对​​我有很大帮助。
    猜你喜欢
    • 1970-01-01
    • 2014-02-05
    • 1970-01-01
    • 1970-01-01
    • 2013-04-29
    • 2012-10-29
    • 1970-01-01
    • 2022-10-26
    • 2023-03-25
    相关资源
    最近更新 更多