不会。
加多个条件。
var state = {
up : 0, //w
down: 0, //s
left:0, //d
right:0 //a
}
function keydownFn(e){
var s = state;
if(e.which == 87 || state.up){
state.up = 1;
}
if(e.which == 83 || state.down){
state.down = 1;
}
if(e.code == 68 || state.left){
state.left = 1;
}
if(e.code == 65 || state.right){
state.right = 1;
}
}
function keyupFn(e){
var s = state;
if(e.which == 87 || state.up){
state.up = 0;
}
if(e.which == 83 || state.down){
state.down = 0;
}
if(e.code == 68 || state.left){
state.left = 0;
}
if(e.code == 65 || state.right){
state.right = 0;
}
}document.addEventListener('keydown',keydownFn);
document.addEventListener('keyup',keyupFn);
加多个条件。
var state = {
up : 0, //w
down: 0, //s
left:0, //d
right:0 //a
}
function keydownFn(e){
var s = state;
if(e.which == 87 || state.up){
state.up = 1;
}
if(e.which == 83 || state.down){
state.down = 1;
}
if(e.code == 68 || state.left){
state.left = 1;
}
if(e.code == 65 || state.right){
state.right = 1;
}
}
function keyupFn(e){
var s = state;
if(e.which == 87 || state.up){
state.up = 0;
}
if(e.which == 83 || state.down){
state.down = 0;
}
if(e.code == 68 || state.left){
state.left = 0;
}
if(e.code == 65 || state.right){
state.right = 0;
}
}document.addEventListener('keydown',keydownFn);
document.addEventListener('keyup',keyupFn);
state.up = 0;
}
这个判断有问题,当向上时,松开任意键,state.up = 0就会成立.坦克就会停.
这里应该使用&&.
if(e.which == 87 ){
state.up = 0;
}