window.addEventListener("keydown", keyDown, false);
window.addEventListener("keyup", keyUp, false);
var key = new Set();
function keyDown(k) {
key.add(k.keyCode);
if (key.has(83)) {
player.vy = 1;
};
if (key.has(87)) {
player.vy = -1;
};
if (key.has(65)) {
player.vx = -1;
if (key.has(68)) {
player.vx = -1;
};
};
if (key.has(68)) {
player.vx = 1;
if (key.has(65)) {
player.vx = 1;
};
};
};
function keyUp(k) {
key.delete(k.keyCode);
if (k.keyCode === 83) {
player.vy = 0;
};
if (k.keyCode === 87) {
player.vy = 0;
};
if (k.keyCode === 65) {
if (!key.has(68)) {
player.vx = 0;
};
};
if (k.keyCode === 68) {
if (!key.has(65)) {
player.vx = 0;
};
};
};
我正在尝试在拨打W,A,S,D键时创建平滑的动作。我终于得到了一些有效的东西,除了一个小故障。每当我按住D向右移动并按A时,玩家的动作不会中断。这就是我希望它工作的方式,但是当我做相反的事情时,运动被中断并逆转。如果我切换我在代码中指出的2个块,它将反转问题,修复一个并打破另一个。我认为它与如何捕捉if语句有关,但我不知道。有人能告诉我ffffffff发生了什么吗?