Flash 大位图之间无延迟

Flash 大位图之间无延迟,flash,actionscript-3,Flash,Actionscript 3,我正在使用一个3800x3000位图作为游戏的背景 现在,我首先显示整个位图(横向),然后放大字符。 我使用的是GreenSock的TweenMax,但即使使用这个高级tween类,我的位图也不会平滑移动和缩放 有什么办法解决这个问题吗?我也希望使用较小的位图并缩放它们,但这样会丢失质量,我无法模糊位图以隐藏质量损失,因为位图中也有地形,我不想模糊它。为什么位图如此大?您的目标设备/屏幕是否扩展到3800x3000 建议: 回避这个问题。使用较小的位图,或将其分解为多个小位图,或使用矢量形状再现

我正在使用一个3800x3000位图作为游戏的背景

现在,我首先显示整个位图(横向),然后放大字符。 我使用的是GreenSock的TweenMax,但即使使用这个高级tween类,我的位图也不会平滑移动和缩放


有什么办法解决这个问题吗?我也希望使用较小的位图并缩放它们,但这样会丢失质量,我无法模糊位图以隐藏质量损失,因为位图中也有地形,我不想模糊它。

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

建议:

  • 回避这个问题。使用较小的位图,或将其分解为多个小位图,或使用矢量形状再现更多背景。显然,并不是每件艺术品都可以作为矢量重新创建,但如果可以,您将获得巨大的文件大小节约和一些性能改进

  • 确保已启用cacheAsBitmap。这会告诉Flash优化位图的渲染。当位图没有过滤器、几乎没有变换并且不经常移动或旋转时,它工作得最好。它是固定背景的理想选择

  • 硬模式:如果你想变得非常花哨,并且你的目标观众支持最新的Flash播放器,试着在2D舞台后面的3D空间中创建一个矩形的背景作为纹理。请参阅Thibault Imbert的这篇文章,了解我的意思:


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

    哈哈,谢谢你的快速回复:1。我使用这么大的位图是因为你可以行走的地形很长;2.我已经把它打开了;3.我在molehill的2D框架上工作了2天,在发布这个问题之前,我停止了工作。我尝试了“Starling”框架,但有太多的缺点。所以我认为分割位图是唯一的选择?分割听起来是最好的选择。即使你不使用molehill平台作为背景,你也可以借用平截头体剔除的思想。可以将背景视为二维瓷砖矩阵,将用户的视口视为在其上移动的矩形。大约每一帧,根据背景瓷砖的元素对视口边界进行命中测试,将显示哪些瓷砖需要在舞台上。其他的可以临时从显示列表中删除,从而提高性能。