Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Не работает KeyboardEvent (http://www.flasher.ru/forum/showthread.php?t=198384)

ndiezel 25.04.2013 15:26

Не работает KeyboardEvent
 
Здравствуйте.
Уже второй день бьюсь с каким-то не понятным мне глюком.

Код:
Код AS3:

private function start_game(level)
                {
                        stage.addEventListener(KeyboardEvent.KEY_DOWN,hero_fly);
                        function hero_fly(e:KeyboardEvent):void
                        {
                                trace("asdas");
                                switch (e)
                                {
                                ...

Запускаю - trace ничего не выводит при нажатии на клавиши. Функция hero_fly - не запускается.
библиотеки KeyboardEvent и Event - подключены.
Вставляю этот код в основной as файл - работает. Пишу в классе Main - не работает.

В чём может быть причина?

Deimos747 25.04.2013 15:33

Проблема в том, что на объекте нет фокуса. Если вам нужен обработчик, который будет работать всегда, то подписывайтесь к stage приложения.

ndiezel 25.04.2013 15:37

Цитата:

Сообщение от Deimos747 (Сообщение 1131232)
Проблема в том, что на объекте нет фокуса. Если вам нужен обработчик, который будет работать всегда, то подписывайтесь к stage приложения.

Нет, мне не нужен обработчик, который будет работать всегда.
Я правильно вас понял, что нужно фокус переместить на мувик, действия в котором мне нужно отслеживать?

Если это так, буду благодарен за пример.

chamele0n 25.04.2013 15:37

Цитата:

Сообщение от ndiezel (Сообщение 1131230)
Вставляю этот код в основной as файл - работает.

тоесть fla ?

вешай слушатели в конструкторе главного класа
Код AS3:

public function Main() {
    stage.addEventListener(KeyboardEvent.KEY_DOWN,hero_fly);
    .....


Deimos747 25.04.2013 15:42

Вешайте обработчик на
Код AS3:

Main.instance.stage.addEventListener(KeyboardEvent.KEY_DOWN,hero_fly);

где в Main.as
Код AS3:

public static var instance: Main;
public function Main() {
    instance = this;
    .....
}


Hauts 25.04.2013 15:54

"Main.instance.stage" — зло.

Deimos747 25.04.2013 16:00

Цитата:

Сообщение от Hauts (Сообщение 1131241)
"Main.instance.stage" — зло.

Не спорю, но другого простого способа не знаю. Написание KeyboardManager не в счёт.

carrotoff 25.04.2013 16:06

Цитата:

но другого простого способа не знаю
Сделать что? иметь постоянную ссылку на Main или stage?

Для второго варианта любой экранный объект будет иметь на него ссылку после добавления на сцену.
Вообще не вижу необходимости в такой конструкции

ndiezel 25.04.2013 16:18

Цитата:

Сообщение от Deimos747 (Сообщение 1131243)
Не спорю, но другого простого способа не знаю. Написание KeyboardManager не в счёт.

Что такое KeyboardManager ?

И эм...
Я не против "философских диспутов", но у меня тут код не работает. И что самое печальное - я никак не могу понять - почему?
Растолкуйте уж топикстартеру, пожалуйста.

Да и не работает у меня main.instance
Ошибку выдаёт компиллятор.

Deimos747 25.04.2013 16:29

Напишите в главном классе аналогичный код
Цитата:

Сообщение от Deimos747 (Сообщение 1131239)
Код AS3:

public static var instance: Main;
public function Main() {
    instance = this;
    .....
}




Часовой пояс GMT +4, время: 17:13.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.