我正在制作2D等距游戏,其中将贴图放置在2D数组中。这是一张16 * 16的地图,看起来就像这样:
在游戏循环开始之前,必须初始化map数组的大小和内容,我注意到这是加载程序时最大的瓶颈之一。如果地图是5000 * 5000,则在我相对高端的计算机上(我认为这似乎很慢)大约需要7秒钟。
这是否是javascript速度方面的问题,还是我的代码效率低下?
包含磁贴内容的数组的初始化如下:
// Create Array to represent tile contents
mapArray = new Array(mapWidth);
for (var i = 0; i < mapWidth; i++) {
mapArray[i] = new Array(mapHeight);
for (var j = 0; j < mapHeight; j++) {
mapArray[i][j] = new Tile("water", 0, false);
}
}
该数组保存的对象是下面的tile类:
// Tile class
function Tile(type, height, mouseOver) {
// Add object properties like this
this.type = type;
this.height = height;
this.mouseOver = mouseOver;
}
最佳答案
如果您要向每个磁贴注册单独的事件侦听器,那肯定会减慢程序的速度。考虑仅通过侦听容器上的mouseover / mousemove事件,然后从鼠标的(x,y)坐标派生图块来减少侦听器的数量。