Пауза/рывок при нажатии клавиши

То что касается флеша, но не касается ВКонтакте API. Например проблемы при создании прыгающего мячика.
Ответить
Agiliter
Сообщения: 112
Зарегистрирован: 01 фев 2014, 13:46

Пауза/рывок при нажатии клавиши

Сообщение Agiliter »

Добрый день! Пишу обработчик событий для клавиатуры (left, right ,up и down) и заметил одну неприятную вещь. После первого нажатия клавиши следует пауза, а далее идут повторы нажатой кнопки. Вот эта вот пауза с последующим дерганьем очень нелицеприятно смотрится когда, например, перемещаешь квадрат стрелками на клавиатуре, а он будет дергать при старте как загибающийся запорожец с резко брошенным сцеплением на приличных оборотах при включенной передаче. Можно ли от этого избавиться? Во многих игрушках проблем таких нет. Дело в коде или это особенность as3?

Код: Выделить всё

addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);       addEventListener(KeyboardEvent.KEY_UP,keyUpHandler); private function keyDownHandler(e:KeyboardEvent):void{if (e.keyCode == Keyboard.LEFT) leftPressed = true;if (e.keyCode == Keyboard.RIGHT) rightPressed = true;if (e.keyCode == Keyboard.UP) upPressed = true;if (e.keyCode == Keyboard.DOWN) downPressed = true; move(); }private function keyUpHandler(e:KeyboardEvent):void{           if (e.keyCode == Keyboard.LEFT) leftPressed = false;if (e.keyCode == Keyboard.RIGHT) rightPressed = false;if (e.keyCode == Keyboard.UP) upPressed = false;if (e.keyCode == Keyboard.DOWN) downPressed = false;            }private function move():void{            if (leftPressed)                box.move("left");            if (rightPressed)                 box.move("right");            if (upPressed)                 box.move("up");            if (downPressed)                 box.move("down");           }
XELAD
Сообщения: 205
Зарегистрирован: 17 июл 2012, 05:25

Re: Пауза/рывок при нажатии клавиши

Сообщение XELAD »

Задержка перед началом повтора символа устанавливается на клиенте. Передвигать что-либо при срабатывании keyDownHandler не рекомендуется.
Agiliter
Сообщения: 112
Зарегистрирован: 01 фев 2014, 13:46

Re: Пауза/рывок при нажатии клавиши

Сообщение Agiliter »

XELAD писал(а):Передвигать что-либо при срабатывании keyDownHandler не рекомендуется
А как тогда?
dog
Сообщения: 43
Зарегистрирован: 17 мар 2014, 15:18

Re: Пауза/рывок при нажатии клавиши

Сообщение dog »

Попробуй в обработчик keyDownHandler, в самый конец добавить e.updateAfterEvent();
XELAD
Сообщения: 205
Зарегистрирован: 17 июл 2012, 05:25

Re: Пауза/рывок при нажатии клавиши

Сообщение XELAD »

Пользуйтесь официальными уроками от Adobe. В уроке Movement-keys показано то, что вы пытаетесь сделать. Там использован enterFrame для движения чего-либо, проверяющий if(smthPressed){mc.moveSomewhere();}
Ответить