【问题标题】:Good Resource for Flash/AS3 Perforamace Tips/Tricks for GamesFlash/AS3 性能提示/游戏技巧的好资源
【发布时间】:2010-12-11 06:51:47
【问题描述】:

我正在制作一个包含大量图形/代码的多人 Flash 游戏。

我遇到了一些性能问题,例如天气效果。

就像我想知道在大型资源密集型游戏中使用位图图形还是只使用“矢量”(fla 中绘制的任何格式的 Flash 图像)图形更好? 虽然不担心预加载时间,但只担心游戏时的游戏性能

【问题讨论】:

    标签: flash actionscript-3


    【解决方案1】:

    Flash 渲染原生 Shape/Sprite/MovieClip 非常适合用于少量简单动画,但如果您同时制作多个或复杂动画,它很快就会碰壁。

    在您确定渲染是瓶颈(分析是您的朋友)的情况下,您可以通过在游戏中创建位图作为“视图”并使用 BitmapData 的 copyPixels 函数来 blit BitmapData 表示来获得更快的性能每一帧都将你的动画帧放入该视图中。

    在我的最新游戏中,正是出于这个原因,我正在这样做。我正在获取所需的 MovieClips,通过使用 BitmapData 的 draw() 方法在加载时渲染帧(这有点慢),然后使用 copyPixels 在视图中绘制它们,逐步浏览它们的帧并缓存每个帧的 bitmapData 表示在运行时(非常快)。

    当然,没有什么是免费的,所以你必须注意,在这种情况下你是在用 CPU 周期换取内存空间,如果你有很多长动画,你的应用程序的内存使用量会很快飙升。

    【讨论】:

    • 有趣。 Blitting 是我研究过的东西,但还没有弄脏它。我读过http://www.photonstorm.com/archives/160/is-pixel-blitting-in-as3-really-worth-the-effort,他们的结果似乎与你的不同。他们发现速度相似,但使用 blitting 的内存使用量要少得多?
    • 使用多帧 MovieClips 而不是 Sprites 重做他的测试,并在混合中添加旋转(您可以通过在像素 blitting 设置中预先旋转缓存的缓冲区来说明这一点),性能差异变得明显快得多。他的场景具有所有相同的非旋转/缩放单帧精灵并设置了 cacheAsBitmap 本质上是在内部使用像素块。
    【解决方案2】:

    我认为“位图或矢量”没有一个通用的答案...这完全取决于您的游戏的具体条件和许多其他变量...也许您可以将其缩小到更具体的问题可以给出一些想法。

    目前,我建议您检查有关 Flash Player 内部结构的信息,特别是有关它如何呈现图形和矢量的信息...然后对一些一般情况进行基准测试(大图形与大矢量等...)这样您就可以更好地了解在何处以及如何优化您的应用程序。

    【讨论】:

      【解决方案3】:

      对您的问题的直接回答在很大程度上取决于具体情况。然而,我最近遇到了BirdEye AS3 图形库,这可能是最有趣的。根据演示,它的性能非常好。您可能想使用它,或者至少从中学习。

      更新:这是一个 Flex 库,因此如果您直接使用 Flash,可能不会感兴趣。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-03-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-06
        • 2023-03-19
        • 2014-01-03
        相关资源
        最近更新 更多