Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Javascript. Отмена неодновременности (https://javascript.ru/forum/misc/37152-javascript-otmena-neodnovremennosti.html)

Valdemor 09.04.2013 16:52

Javascript. Отмена неодновременности
 
Проблема вот в чем: я делаю при помощи canvas онлайн-игру. Используя обычный document.onkeydown, я не могу отследить >1 нажатия.
Мне нужно, чтобы и при нажатии на "W" и при нажатии на "D" протагонист и бежал вверх, и вправо.
Т.е. мне не нужно перебирать комбинации типа ("W"+"D")&("W"+"A"), т.к. это будет очень долго, мне просто нужно снять запрет на неодновременное нажатие клавиш.:thanks:

tsigel 09.04.2013 17:01

при нажатии W проверяйте нажаты ли A или D

tsigel 09.04.2013 17:04

Точнее не так. При нажатии на каждую управляющую клавишу превеяйте нажата ли другая и какая. В зависимости от этих клавишь выбирайте направление движения и запоминайте какая клавиша была нажата. При событии mouseup соответственно убираете эту клавишу из списка "нажатых"

Valdemor 09.04.2013 17:04

Я же писал:
Цитата:

Сообщение от Valdemor (Сообщение 245078)
Т.е. мне не нужно перебирать комбинации типа ("W"+"D")&("W"+"A"), т.к. это будет очень долго


Valdemor 09.04.2013 17:06

У меня в игре очень(!) много разных клавиш движения, так что этот способ не подходит

Valdemor 09.04.2013 17:07

Кстати, если персонаж движется влево, и я сразу же нажимаю вверх, то персонаж стоит еще ~полсекунды. Почему?

dmitriymar 09.04.2013 17:13

Цитата:

Сообщение от Valdemor
Кстати, если персонаж движется влево, и я сразу же нажимаю вверх, то персонаж стоит еще ~полсекунды. Почему?

да уж , телепаты здесь только и есть.
если сможешь сказать какого цвета у меня кнопки на клавиатуре, я постараюсь ответить на твой вопрос :)

Valdemor 09.04.2013 17:21

Белые)

Valdemor 09.04.2013 17:26

Ладно, проблему с движением можете не решать... А что делать с одновременным нажатием?

Valdemor 09.04.2013 17:26

Ладно, буду делать через огромные if-блоки...


Часовой пояс GMT +3, время: 02:04.