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

tsigel 09.04.2013 17:27

Не надо делать огромные if-блоки. if блоки должны быть маленькие!

tsigel 09.04.2013 17:29

Есть всего 8 состояний. Каждое состояние запускает свою функцию. Внутри условия только запуск функции. Функция с условиями запускает сама себя каждые n милисек. пока нажата любая из кнопок.

dmitriymar 09.04.2013 17:49

Цитата:

Сообщение от Valdemor
Белые)

нет конечно.
как можно не видя кода ответить на это:
Цитата:

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

Хотя можно -алгоритм неверный в корне

Valdemor 09.04.2013 17:54

document.onkeydown = function(e) {
if(e.keyCode==37) {
tank.vector = "left";
if(tank.x>0) {
tank.x-=4;
}
}

Valdemor 09.04.2013 17:54

Вот код движения танка (персонажа).

Valdemor 09.04.2013 17:54

Какой же дожен быть алгоритм?

tsigel 09.04.2013 17:56

Эээ.. А вы делаете без ООП?

Valdemor 09.04.2013 18:26

Поскольку в коде присутствуют объекты, то это 100% ооп

tsigel 09.04.2013 18:29

А, да, мой косяк.

megaupload 09.04.2013 20:06

var keys = {
  up     : false,
  down   : false,
  left   : false,
  right  : false
};

function onkeydown(event){
    if(event.keyKode === 323){
        keys.up = true;
    } else if(event.keyKode === 32) {
        keys.down = true; 
    }
}

function onkeyup(event){
    if(event.keyKode === 323){
        keys.up = false;
    } else if(event.keyKode === 32) {
        keys.down = false; 
    }
}



в keys всегда хранится актуальное состояние нажатых клавиш. кэп


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