我正在制作一个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;
}
发布于 2014-05-25 02:32:01
如果你在每个磁贴上注册单独的事件监听器,那肯定会减慢你的程序。考虑通过只侦听容器上的mouseover/mousemove事件,然后从鼠标的(x,y)坐标派生平铺来减少侦听器的数量。
https://stackoverflow.com/questions/23848161
复制相似问题