Страница 1 из 1

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

Добавлено: 15 окт 2014, 20:56
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");           }

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

Добавлено: 15 окт 2014, 21:23
XELAD
Задержка перед началом повтора символа устанавливается на клиенте. Передвигать что-либо при срабатывании keyDownHandler не рекомендуется.

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

Добавлено: 15 окт 2014, 21:55
Agiliter
XELAD писал(а):Передвигать что-либо при срабатывании keyDownHandler не рекомендуется
А как тогда?

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

Добавлено: 16 окт 2014, 01:03
dog
Попробуй в обработчик keyDownHandler, в самый конец добавить e.updateAfterEvent();

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

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