2016-12-21 3 views
1

Мне нужна помощь с клавиатурным событием. Так что я хочу, чтобы это произошло, когда вы нажимаете w и клавишу 2, я хочу добавить один для воды вместо одного в дерево (в качестве альтернативы при нажатии клавиши w без 2 он добавит один к дереву. хотят древесину и воду, чтобы обновить один раз вместо того, чтобы добавлять один, когда вы держите нажатой клавишу. Heres некоторый кодОбновление переменной один раз на клавиатуре ввода

var wood = 0; 
 
var water = 0; 
 
var woodOut = document.getElementById('wood'); 
 
var waterOut = document.getElementById('water'); 
 

 
window.addEventListener("keydown", key); 
 

 
function key() { 
 
    var x = event.which || event.keyCode; 
 
    if(x == 87){ 
 
    wood = wood + 1; 
 
    woodOut.innerHTML = wood; 
 
    } 
 
    if(x == 87 && x == 50){ 
 
    water = water + 1; 
 
    waterOut.innerHTML = water; 
 
    } 
 
}
<p id="wood">0</p> 
 
<p id="water">0</p>

+1

ваш второй, если не будет верно, попробуйте, как описано [здесь] (http://stackoverflow.com/questions/5203407/javascript-multiple-keys-pressed-at-once) –

ответ

1

Вы должны следить на предыдущей нажатой клавиши (w+1 будет добавить в wood, w+2 для water):

var wood = 0; 
 
var water = 0; 
 
var woodOut = document.getElementById('wood'); 
 
var waterOut = document.getElementById('water'); 
 
var previous_key; 
 

 

 
window.addEventListener("keydown", key); 
 

 
function key() { 
 
    var x = event.which || event.keyCode; 
 
    if(x== 49 && previous_key == 87){ 
 
    wood = wood + 1; 
 
    woodOut.innerHTML = wood; 
 
    } 
 
    if (x == 50 && previous_key == 87){ 
 
    water = water + 1; 
 
    waterOut.innerHTML = water; 
 
    } 
 
    previous_key = x; 
 
}
<p id="wood">0</p> 
 
<p id="water">0</p>

0

на самом деле, это очень легко, если я понял, что вы хотите. вы нужно просто создать объект Map с двумя свойствами, которые являются вашим ключевым кодом, и поместить их в false. Когда оба W и 2 нажаты, вы можете подать то, что хотите.

Посмотрите на следующий код и попытаться просто нажмите W, а затем ш + 2:

var wood = 0; 
 
var water = 0; 
 
var woodOut = document.getElementById('wood'); 
 
var waterOut = document.getElementById('water'); 
 
var map = {87: false, 50: false,}; 
 
window.addEventListener("keydown", keyDown); 
 
window.addEventListener("keyup", keyUp); 
 

 
function keyDown(e) { 
 
if (e.keyCode in map) { 
 
    map[e.keyCode] = true; 
 
    if (map[87]) { 
 
     wood = wood + 1; 
 
     woodOut.innerHTML = wood; 
 
    } 
 
    if(map[50] && map[87]){ 
 
     water = water + 1; 
 
     waterOut.innerHTML = water; 
 
    } 
 
} 
 
    
 
} 
 
function keyUp(e) { 
 
    if (e.keyCode in map) { 
 
    map[e.keyCode] = false; 
 
    } 
 
}
<p id="wood">0</p> 
 
<p id="water">0</p>

0

Если вы хотите обновить его только один раз, когда вы удерживаете нажатой клавишу. Попробуйте

window.addEventListener("keyup", key); 
Смежные вопросы