Javascript 变量不通过 ocanvas 函数和 for 循环
Javascript Variable not passing through ocanvas function and for loop
我有一个变量没有通过 ocanvas 函数传递的问题。看起来变量在函数内部发生变化,但没有在函数外部发生变化。这是我的代码:
sonicSpeed2 = 0;
sonicState2 = 0;
canvas.bind("keypress", function () {
var keys = canvas.keyboard.getKeysDown();
var x;
sonicSpeed2 = 4;
for (x = keys.length; x > 0; x--) {
if (keys[x-1] == 16 && keys.length > 1) {
sonicSpeed2 = 15;
sonicState2 = 2;
}
if (keys[x-1] == 65) {
sonicState2 = 1;
sonicDirection2a = false;
}
if (keys[x-1] == 68) {
sonicState2 = 1;
sonicDirection2a = true;
}
if (keys[x-1] == 87) {
sonicState2 = 1;
sonicDirection2b = false;
}
if (keys[x-1] == 83) {
sonicState2 = 1;
sonicDirection2b = true;
}
}
});
if (sonicDirection2a == false) {
nullObject2.x -= sonicSpeed2;
}
else if (sonicDirection2a == true) {
nullObject2.x += sonicSpeed2;
}
if (sonicDirection2b == false) {
nullObject2.y -= sonicSpeed2;
}
else if (sonicDirection2b == true) {
nullObject2.y += sonicSpeed2;
}
事件处理程序在未来不确定的时间执行。 绑定事件处理器,也就是你正在做的canvas.bind("keypress", ...)
没有执行的功能。 after 立即执行的内容。
如果你想做一些事情来响应事件,它必须在事件处理程序中或从事件处理程序中执行。
参考Why is my variable unaltered after I modify it inside of a function? - Asynchronous code reference。
我有一个变量没有通过 ocanvas 函数传递的问题。看起来变量在函数内部发生变化,但没有在函数外部发生变化。这是我的代码:
sonicSpeed2 = 0;
sonicState2 = 0;
canvas.bind("keypress", function () {
var keys = canvas.keyboard.getKeysDown();
var x;
sonicSpeed2 = 4;
for (x = keys.length; x > 0; x--) {
if (keys[x-1] == 16 && keys.length > 1) {
sonicSpeed2 = 15;
sonicState2 = 2;
}
if (keys[x-1] == 65) {
sonicState2 = 1;
sonicDirection2a = false;
}
if (keys[x-1] == 68) {
sonicState2 = 1;
sonicDirection2a = true;
}
if (keys[x-1] == 87) {
sonicState2 = 1;
sonicDirection2b = false;
}
if (keys[x-1] == 83) {
sonicState2 = 1;
sonicDirection2b = true;
}
}
});
if (sonicDirection2a == false) {
nullObject2.x -= sonicSpeed2;
}
else if (sonicDirection2a == true) {
nullObject2.x += sonicSpeed2;
}
if (sonicDirection2b == false) {
nullObject2.y -= sonicSpeed2;
}
else if (sonicDirection2b == true) {
nullObject2.y += sonicSpeed2;
}
事件处理程序在未来不确定的时间执行。 绑定事件处理器,也就是你正在做的canvas.bind("keypress", ...)
没有执行的功能。 after 立即执行的内容。
如果你想做一些事情来响应事件,它必须在事件处理程序中或从事件处理程序中执行。
参考Why is my variable unaltered after I modify it inside of a function? - Asynchronous code reference。