Страницы

Поиск по вопросам

воскресенье, 9 июня 2019 г.

JS keycode event

пытаюсь сделать html страницу с
event.keyCode
написал такой скрипт :
document.addEventListener('keydown', eventT, false);
function eventT(event) {
switch (event.keyCode) { case 38: console.log('вперед'); break; case 40: console.log('назад'); break; case 37: console.log('лево'); break; case 39: console.log('право'); break; } }
здесь все работает но как можно сделать движение нискосоком добавил такой скрипт но не сработало
if (event.keyCode == 37 && event.keyCode == 38) { console.log('найскосок NUM7') } else if (event.keyCode == 38 && event.keyCode == 39) { console.log('найскосок NUM9') }
и столкнулся с еще одной проблемой когда нажимаешь стрелку верх и на стрелку налево стрелка верх прерывается можно ли этого избежать?
Control Panel

Control Panel





Ответ

Чтобы обрабатывать одновременное нажатие клавиш, надо нажатия записывать отдельно, а обрабатывать - отдельно. Попробуйте:
const keys = []; document.onkeydown = e => { if(keys.indexOf(e.which)<0) keys.push(e.which); }; document.onkeyup = e => { keys.splice(keys.indexOf(e.which),1); }; setInterval(() => { keys.forEach(item => { switch(item){ case 87:case 38://W console.log('вперед'); break; case 68:case 39://D console.log('вправо'); break; case 65:case 37://A console.log('влево'); break; case 83:case 40://S console.log('назад'); break; default: //console.log(item); } }); // Наискосоки: if (keys.includes(37) && keys.includes(38)) { console.log('найскосок NUM7') } if (keys.includes(38) && keys.includes(39)) { console.log('найскосок NUM9') } if (keys.includes(39) && keys.includes(40)) { console.log('найскосок NUM3') } if (keys.includes(37) && keys.includes(40)) { console.log('найскосок NUM1') } }, 111);

Комментариев нет:

Отправить комментарий