2013-03-23 63 views
2

我想知道什么是最好的方式去创建大型的基于瓷砖的地图在动作与Flash的Flash 2将是。Actionscript 2大的基于瓷砖的地图创建滞后

用我目前的代码,超过35x35(1225影片剪辑)的任何地图都开始滞后。地图是从一个简单的多维数组创建的,例如。

var map = [[95,23,25,23,16,25],[95,23,25,23,16,25],[95,23,25,23,16,25]]; 

程序只需创建一个瓷砖的电影剪辑,进入到相应的框架和相对于运动员的位置瓷砖场所。每个瓦片都有一个属性,即“可行走”,它可以是真或假,从而确定玩家是否可以在其上行走。这些瓷砖是持有人动画片段的孩子。当玩家移动时,持有者动画片段被移动(并且包含其中包含的许多贴图)。

减少大规模地图滞后的最佳方法是什么?

+0

这是同一个用户提出的三个相关问题之一,问题是:[AS2用onEnterFrames处理几个动画片段时减少延迟的最佳方式](http://stackoverflow.com/questions/16848043),[处理与无限/巨大的世界在动作2](http://stackoverflow.com/questions/19060661/dealing-with-infinite-huge-worlds-in-actionscript-2),[动作脚本2大型瓷砖为基础的地图创造滞后] (http://stackoverflow.com/questions/15583420/actionscript-2-large-tile-based-maps-creating-lag) – 2013-09-28 10:50:53

回答

1

如果一次只能看到大地图的一小部分,我只会为当前可见的图块创建子动画片段切片,然后在视口移动时添加/删除它们。另一方面,如果您要一次显示所有内容,则可能需要使用BitmapData类以图形方式将所有拼贴图复制到单个大型动画片段中。然后,您可以删除动画片段磁贴,以便Flash只需滚动一个大型动画片段即可。

根据您的瓷砖的不同,您还可以尝试将cacheAsBitmap设置为true,并在涉及的所有影片剪辑上指定opaqueBackground

+0

一次只能看到地图的一部分,所以删除影片剪辑并重新创建,将它们添加/可见设置为false将是最理想的选择。然而,我已经尝试了几个小时,我似乎无法得到它的工作。有什么建议么? – 2013-03-23 08:32:38

+0

如果我使用BitmapData类,则不会使用动画片段属性即。 .walkable消失了吗? – 2013-03-23 23:08:25

+0

是的,您需要跟踪.walkable与可见瓦片分开。我假设他们已经在分配给影片剪辑的某种阵列中了?您每次执行.walkable检查时都需要访问原始数组。 – 2013-03-24 20:29:07