Цитата:
Сообщение от VVall
Флаг - просто переменная, которая будет принимать одно из двух значений (кнопка нажата, кнопка отжата). Логично использовать для неё тип Boolean.
|
а, ясно. Просто я ещё не совсем знаком с терминами. Познаю, как говориться, в процессе выполнения простеньких задачек. =)
Добавлено через 47 часов 16 минут
Суть проблемы такова, при активном использование (типа, серия ударов из мортал комбат ультимэйт на сеге) клавиши не отвечают, либо путаются в назначении. Нажимаю: влево, вниз, вверх поочерёдно но быстро, выполняется действие наискосок вниз, влево.
Подскажите пожалуйста, есть ли более эффективная возможность манипулировать объектом или подскажите как улучшить этот код. Заранее, ОЧЕНЬ БУДУ БЛАГОДАРЕН.
Привожу код который использую.
Плюс, ещё хочу добавить "space", в этом коде его нет так как с ним ещё хуже.

Код AS3:
package {
import flash.display.*;
import flash.events.*;
import flash.ui.*;
public class Main extends Sprite {
private var upPress:Boolean;
private var leftPress:Boolean;
private var rightPress:Boolean;
private var downPress:Boolean;
private var spacePress:Boolean;
public function Main() {
stage.addEventListener(KeyboardEvent.KEY_DOWN, KeyDawnListener, false, 0, false);
stage.addEventListener(KeyboardEvent.KEY_UP, KeyUpListener, false, 0, false);
}
private function KeyDawnListener (e:KeyboardEvent):void {
if (e.keyCode == Keyboard.UP) {
upPress = true;
} else if (e.keyCode == Keyboard.LEFT) {
leftPress = true;
} else if (e.keyCode == Keyboard.RIGHT) {
rightPress = true;
} else if (e.keyCode == Keyboard.DOWN) {
downPress = true;
} else if (e.keyCode == Keyboard.SPACE) {
spacePress = true;
trace("spacePress");
}
if (upPress&&leftPress) {
trace("upPress leftPress");
} else if (upPress&&rightPress) {
trace("upPress rightPress");
} else if (downPress&&leftPress) {
trace("downPress leftPress");
} else if (downPress&&rightPress) {
trace("downPress rightPress");
} else if (upPress) {
trace("upPress");
} else if (rightPress) {
trace("rightPress");
} else if (leftPress) {
trace("leftPress");
} else if (downPress) {
trace("downPress");
}
}
private function KeyUpListener(e:KeyboardEvent):void {
if (e.keyCode == Keyboard.UP) {
upPress = false;
} else if (e.keyCode == Keyboard.LEFT) {
leftPress = false;
} else if (e.keyCode == Keyboard.RIGHT) {
rightPress = false;
} else if (e.keyCode == Keyboard.DOWN) {
downPress = false;
} else if (e.keyCode == Keyboard.SPACE) {
spacePress = false;
}
}
}
}