如果我将if(x == 0)更改为if(y == 0),则该函数有效。 这样做的目的是稍后使用2D阵列并显示一些图像。 我有2D阵列,所以我可以像背景一样创造一个炸弹人。
var test = [
[]
];
var tile = {
width: can.width / 15,
height: can.height / 15,
}
function render() {
for (var y = 0; y < 15; y++) {
for (var x = 0; x < 15; x++) {
if (x == 0) {
console.log(x, y);
var t = {
width: can.width / 15,
height: can.height / 15,
};
test[y][x] = t;
test[y][x].posX = x * tile.width;
test[y][x].posY = y * tile.height;
test[y][x].num = 1;
}
}
}
}
答案 0 :(得分:0)
test[0]
是一个数组,但test[1]
至test[14]
未定义。如果要初始化其他元素,可以这样做:
for( var i = 0; i < 15; i++ )
test[i] = []
或类似的东西,虽然它更难阅读:
var test = [
[], [], [], [], [],
[], [], [], [], [],
[], [], [], [], []
]
或者,您可以根据需要添加数组元素,而不是预先分配它们:
if( typeof test[y] == 'undefined' )
test[y] = []
答案 1 :(得分:0)
请参阅,看看你的测试初始化,
String text = "<font color=#cc0029>Videos</font> <font color=#ffcc00>(" + numVideos + ")</font>";
getSupportActionBar().setTitle(Html.fromHtml(text));
只有1个空数组元素,请看一下你的循环,它肯定会有效test = [[]]
,因为你将访问if (y == 0)
现在,test[0][0], test[0][1], and so on
,您无法真正做到这一点,因为元素不是在索引0之后启动的。因此,if(x == 0)
以下更改可能会修复您的代码
test[1] is basically undefined, and test[1][0] will fail