【问题标题】:Starling move around huge Image八哥四处走动的巨大图片
【发布时间】:2014-10-17 22:16:58
【问题描述】:

我正在使用 Starling 框架和 Flash Builder。

我有大地图图像(大约 5500x4500 像素),玩家在其中飞来飞去。它是非重复的,不是基于图块而是基于矢量。

我在每个 enterFrame 事件中围绕跟随玩家移动相机,相机每帧显示大约 800x400 部分地图。通过更改地图父 DisplayObject 的 X 和 Y 坐标来模拟相机移动。 绘制这个并保持稳定的 60fps 的最佳方法是什么?

我现在拥有的(尝试在移动设备上使用最高 FPS):

  • 9 Starling 图像,最大纹理尺寸:2048x2048(边缘或更小)。我得到了 53-60 FPS,但我需要稳定性,我觉得我已经达到了渲染限制。

我尝试过的(降低 FPS):

  • 为每个单独的地图对象绘制精灵(多于 9 个但尺寸更小)

  • 使用 CullingSprite(不可见时不渲染它)

【问题讨论】:

    标签: actionscript-3 mobile rendering frame-rate starling-framework


    【解决方案1】:

    实际上,您只需要 4 个屏幕大小的图像,它们环绕并从纹理图集中采样。对于starling 实现来说,movieclips 非常棒,因为您可以将其内容更改为不同的帧或纹理图集的一部分。这样您就不会在每次需要包装时都删除和创建新图像。

    批处理也是一种改进方法,将所有样本作为一个单元移动。

    【讨论】:

    • 只有 4 个屏幕的好主意!屏幕尺寸不是 2^n 的快速渲染可以吗?
    • 所以基本上我仍在移动包含所有 4 个 BG 的容器 DisplayObject,但不会超过 screen.width、屏幕高度,当我碰到那些 BG 容器的一侧时,我只是跳转并更改 Movieclip图片,我得到你的建议了吗?
    • 屏幕大小不必为 2^n。唯一真正的好处是让你的样本为 2^n,但这可能会导致样本更大,因为即使你只需要更多的像素,2^n 也会加倍!
    • 您仍然需要单独检查样品的包装条件(所有 4 个)。然而,将它们作为一个单元移动确实可以提高性能。
    • 我查看了 Starlings MovieClip。它不能设置特定的框架。有一些扩展(link),但它们都为每一帧创建了一些显示对象,然后只要动画前进就只需 addChild 或 removeChild ......所以基本上我必须将所有屏幕尺寸的部分嵌套在单独的 DisplayObjects 和 addChild/remoweChild每次只能看到 4 个,对吧?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-04
    • 1970-01-01
    • 2012-01-20
    • 1970-01-01
    • 1970-01-01
    • 2011-10-17
    相关资源
    最近更新 更多