将巨大形状切成瓷砖的最佳方法是什么?

时间:2013-03-26 12:10:39

标签: flash actionscript actionscript-2

我有一个大的形状,用作一个巨大的地图,当一个角色移动时(角色一直停留在舞台的中心)移动。

现在,由于地图很大,我想将地图切割成只有在舞台区域内才会被剔除的地砖。

我的问题是,如果有一种聪明的方法可以将地图切割成相同尺寸的较小的瓷砖,或者我需要自己选择每个瓷砖吗?

形状/地图位于符号内。问题是地图太大而无法制作动画,因此提高性能我只想显示当前在x = 0和x = 780之间的切片 在y = 0和y = 400之间。

提前致谢。

1 个答案:

答案 0 :(得分:2)

优先级#1绝对不能为屏幕外的内容创建图形对象。为游戏目的创建所有数据和所有内容,但不要将每个图块与图形对象相关联。只创建足够的图形对象来表示任何一个特定时刻的屏幕内容,并将它们与开头的屏幕上的内容相关联;然后当玩家移动时,只需更改与这些图形对象相关联的游戏块。这样可以避免内存不足和其他类似的事情。

您似乎暗示游戏地图在逻辑上划分为磁贴。在这种情况下,你可以这样做:

var x:int = 0;
var y:int = 0;

for (var i:int = firstColumnInFocus; i < firstColumnInFocus + widthRange - 1; i++)
{
    for (var j:int = firstRowInFocus; j < firstRowInFocus + heightRange - 1; j++)
    {
        tileGraphics[x][y].tile = level.tiles[i][j];
        y++;
    }
    x++;
}

为实际的游戏玩法数据结构创建逻辑磁贴,只需创建一个包含所需内容的磁贴或空间对象的二维数组,并确保数组中元素的位置代表其地理位置位置。

我不确定这是否就是你所说的。在某些方面,听起来你说的是一个已经被设计为瓷砖集合的关卡,​​而在其他方面,听起来你正在谈论采用一个精灵并简单地使用瓷砖来估算多少它应该在屏幕上。听起来我个人喜欢你或多或少都在做两件事,但你的策略应该在某种程度上取决于真正发生的事情。