【问题标题】:Tween large bitmap without lag没有延迟的补间大位图
【发布时间】:2012-01-24 19:01:12
【问题描述】:

我使用 3800x3000 位图作为游戏背景。

现在,我首先显示整个位图 - 风景 - 然后放大字符。 我正在使用 GreenSock 的 TweenMax,但即使使用这个高级补间类,我的位图也不会平滑移动和缩放。

任何想法如何解决这个问题?我也想使用较小的位图并对其进行缩放,但是我会失去质量,而且我不能模糊位图以隐藏质量损失,因为位图中也有地形,而我没有不想模糊它。

【问题讨论】:

    标签: flash actionscript-3


    【解决方案1】:

    为什么位图这么大?您的目标设备/屏幕是否扩展到 3800x3000?

    建议:

    1. 回避问题。使用较小的位图,或将其分成几个小位图,或使用矢量形状再现更多背景。显然,并非每件艺术品都可以重新创建为矢量,但如果可以的话,您将获得巨大的文件大小节省和一些性能提升。

    2. 确保已启用 cacheAsBitmap。这告诉 Flash 优化位图的渲染。当位图没有过滤器、很少变换并且不经常移动或旋转时,它的效果最好。它非常适合静止的背景。

    3. HARD 模式:如果您想变得非常花哨并且您的目标受众支持最新的 Flash Player,请尝试将背景创建为 2D 舞台后面存在的 3D 空间中的矩形纹理。请参阅 Thibault Imbert 的这篇文章,了解我的意思:http://www.bytearray.org/?p=2555

    【讨论】:

    • 大声笑,感谢您的快速回复: 1.我使用这么大的位图,因为您可以行走的地形很长; 2. 我已经开启了; 3. 我在 molehill 的 2D 框架上工作了 2 天,在发布这个问题之前就停下来了。我尝试了“Starling”框架,但缺点太多。所以我认为分割位图是唯一的选择?
    • 拆分听起来是最好的选择。即使您不使用 molehill 平台作为背景,您也可以从截锥体剔除中借用一个想法。您可以将背景视为 2D 瓷砖矩阵,将用户视口视为在其上移动的矩形。每一帧左右,视口边界对背景图块元素的命中测试将显示哪些图块需要在舞台上。其他的可以暂时从显示列表中删除,从而提高性能。
    【解决方案2】:

    这确实不是 Flash 特定的问题,因为它本质上更像是一般的游戏开发问题。无论如何,在内存中操作一个巨大的基本位图(以任何语言)都会很慢。您实际上是在每次绘制调用时将数百兆字节的内存移动到当前帧缓冲区中。如果你看大多数像横向卷轴这样的大型背景游戏,背景是由许多复制了数百次的小物体组成的。然后将这种技术与仅将当前屏幕缓冲区中可以看到的小精灵放在舞台上相结合。在地图上移动时,您会删除不再可见的部分以及屏幕移动到的更多图块。这部分技术通常称为平铺缓冲。希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多