我正在用js写一个小的“pacman”游戏。我正在使用html5和canvas,它很顺利。但我想从运行在多维数组上的规范中绘制一个地图。当我使用普通数组时,它就像一个魅力,但是当我使用我的多维数组时,它只是警告“错误的”,这很难过。
我认为这是因为这个块:
function getMapArray() {
// define the yvalue of the map
// will be ytile later..
var items = new Array(1);
for(var i = 0; i < 2; i++) {
items[i] = new Array(xtile);
}
items[0][0] = "0010";
items[0][1] = "0010";
items[0][2] = "0010";
items[0][3] = "0010";
items[0][4] = "0010";
items[0][5] = "0010";
items[0][6] = "0010";
items[0][7] = "0010";
items[0][8] = "0010";
items[0][9] = "0010";
items[0][10] = "0010";
items[0][11] = "0010";
items[0][12] = "0010";
items[0][13] = "0010";
items[0][14] = "0010";
return items;
}
但我不确定。 它可能很容易,但我已经长时间盯着代码了,它说xtile是未定义的,即使我用整数切换它。
链接到完整来源: http://pastie.org/3168446
JsFiddle演示: http://jsfiddle.net/928wU/
感谢您的帮助!
答案 0 :(得分:1)
尝试使用var items = [];
(内部类似)代替new Array
。
如果您能收到实际的错误消息,那将会有所帮助。
答案 1 :(得分:1)
您的getMap
不会抛出错误。它返回一个长度为2的数组。第一个元素是一个长度为max(xTile,15)的数组,前15个索引填充了所有相同的字符串。第二个元素是长度为xTile的数组,每个索引都为空(未定义)。我不知道这是否是理想的。
但现在,请查看您发布的代码here:
function drawMap(map) {
//draw the x
for(i = 0; i < map.length; i++) {
entry = map[i];
for(j = 0; j < entry.length; j++) {
if(i == 0 && j == 0)
fillCanvas(map[x], x, x+40, 40, 40);
else
fillCanvas(map[x], x*40, i*40, (x + 1) * 40, i*40);
}
}
}
这贯穿你的二维数组。但是,它会尝试接收地图的x
属性。不是x
画布的宽度???
答案 2 :(得分:0)
您将数组初始化为1
长度。那太小了?