所以,我正在创建一个相当基本的开销2D游戏,用户可以“绘制”地图。 (实际上,他们不画画,手动输入x / y的列表,但设计方面刚才很重要。)
添加新图块时,该图块会进入所有图块的数组。
中心点是0,0。瓷砖可以在所有方向添加,因此可以是1,1或100,100或-50,-50。
有时候我想确定某个位置的图块。一个(imho bad)这样做的方法是获取x / y并遍历所有切片并检查它们是否是该位置。
我目前正在做的方法是使用一个单独的2d数组的null元素,并且当添加一个tile时,它在该数组中设置。 (即tilemap [10] [10] = tile [100]) 当然,因为值可以为负,所以tilemap [0] [0]实际上是-1000 / -1000块。 (被选为任意限制)
有更好的方法吗?我觉得使用大量空的物体可能更为理想。
非常感谢。
答案 0 :(得分:4)
一种可能的解决方案是保留Object
或Dictionary
,其中键是x / y位置。
因此,如果您在10,20
添加了一个磁贴,则可以将其存储在对象中:
this.m_objs[tileX + "_" + tileY] = new Tile;
因此,如果您想通过使用以下内容检查位置10,20
处是否有某些内容:
public function checkIfExists( x:int, y:int ):void
{
return ( this.m_objs[x + "_" + y] != undefined );
}
答案 1 :(得分:2)
我建议使用Dictionary
,因为搜索它比搜索数组要快得多。从可能的坐标判断-1000 / -1000这将是一个很大的优势!