Проблема с событиями клавиатуры

То что касается флеша, но не касается ВКонтакте API. Например проблемы при создании прыгающего мячика.
Ответить
Derial
Сообщения: 65
Зарегистрирован: 07 мар 2012, 17:22

Проблема с событиями клавиатуры

Сообщение Derial »

Доброго времени суток. Первый раз взялся за работу с клавиатурой и вот возникла проблема - мне нужно чтобы при нажатии одновременно двух клавиш(например UP и RIGHT происходило какое-то действие(с этим я справился, привожу код:)

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

    private var rightDown:Boolean = false;        private var leftDown:Boolean = false;        private var upDown:Boolean = false;        private var downDown:Boolean = false;           stage.addEventListener(KeyboardEvent.KEY_DOWN, keydown);        stage.addEventListener(KeyboardEvent.KEY_UP, rightUP);         private function keydown (e:KeyboardEvent):void {                if(e.keyCode == Keyboard.RIGHT){        tank2.rotation += 5;        rightDown = true;        }else if(e.keyCode == Keyboard.LEFT){        tank2.rotation -= 5;        leftDown = true;        }                var dirAngle:Number = tank2.rotation / 180 * Math.PI;                if (e.keyCode == Keyboard.UP /*|| upTest == 1*/) {        tank2.x += speedTank * Math.cos(dirAngle);        tank2.y += speedTank * Math.sin(dirAngle);        upDown = true;        }else if(e.keyCode == Keyboard.DOWN){        tank2.x -= speedTank * Math.cos(dirAngle);        tank2.y -= speedTank * Math.sin(dirAngle);        downDown = true;        }                if (rightDown == true && upDown == true) {            tank2.x += speedTank * Math.cos(dirAngle);            tank2.y += speedTank * Math.sin(dirAngle);            tank2.rotation += 5;        }        if (rightDown == true && downDown == true) {            tank2.x -= speedTank * Math.cos(dirAngle);            tank2.y -= speedTank * Math.sin(dirAngle);            tank2.rotation += 5;        }        if (leftDown == true && upDown == true) {            tank2.x += speedTank * Math.cos(dirAngle);            tank2.y += speedTank * Math.sin(dirAngle);            tank2.rotation -= 5;        }        if (leftDown == true && downDown == true) {            tank2.x -= speedTank * Math.cos(dirAngle);            tank2.y -= speedTank * Math.sin(dirAngle);            tank2.rotation -= 5;        }        }                private function rightUP(e:KeyboardEvent):void {            if(e.keyCode == Keyboard.RIGHT){        rightDown = false;        trace('rightDown = false;');        }        if(e.keyCode == Keyboard.LEFT){        leftDown = false;        trace('leftDown = false;');        }        if(e.keyCode == Keyboard.UP){        upDown = false;        trace('upDown = false;');        }        if(e.keyCode == Keyboard.DOWN){        downDown = false;        trace('downDown = false;');        }        }             

Как мне сделать чтобы при отпускании клавиши RIGHT объект продолжал двигаться в перед(т.е клавиша UP находилась в состоянии "нажата")?
Derial
Сообщения: 65
Зарегистрирован: 07 мар 2012, 17:22

Re: Проблема с событиями клавиатуры

Сообщение Derial »

Нашел решение!!! Эта жара меня совсем убила(мозги сварились, к вечеру похолодало и мозг остыл, заработал)
Может кому нужно? могу выложить.
Аватара пользователя
bodnar
Модератор
Модератор
Сообщения: 1399
Зарегистрирован: 03 апр 2010, 06:41

Re: Проблема с событиями клавиатуры

Сообщение bodnar »

нужно не спрашивать, а сразу выкладывать
Ответить