Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Кнопочные события возникают только после клика (http://www.flasher.ru/forum/showthread.php?t=173758)

Aveyder93 11.01.2012 00:58

Кнопочные события возникают только после клика
 
Помогите пожалуйста!
Возникла проблема следующего плана:
В основном классе запускается конструктор, в нём происходит пользовательское событие, а в приёмнике этого события создаётся объект keyboard_input класса Keys (который отвечает за отлваливание нажатий клавиш up, right,down, space, left).
Сам класс Keys:
Код AS3:

package {
        import flash.events.*;
        public class Keys {
                private var press_left=false;
                private var press_right=false;
                private var press_up=false;
                private var press_down=false;
                private var press_space=false;
                public function Keys(movieclip) {
 
                        movieclip.stage.addEventListener(KeyboardEvent.KEY_DOWN,key_down);
                        movieclip.stage.addEventListener(KeyboardEvent.KEY_UP,key_up);
                }
                public function is_left() {
 
                        return press_left;
                }
                public function is_down() {
                        return press_down;
                }
                public function is_right() {
                        return press_right;
                }
                public function is_up() {
                        return press_up;
                }
                private function key_down(event:KeyboardEvent) {
                        if (event.keyCode==32) {
                                trace('p');
                                press_space=true;
                        }
                        if (event.keyCode==37) {
                                press_left=true;
                        }
                        if (event.keyCode==38) {
                                press_up=true;
                        }
                        if (event.keyCode==39) {
                                press_right=true;
                        }
                        if (event.keyCode==40) {
                                press_down=true;
                        }
 
                }
                private function key_up(event:KeyboardEvent) {
                        if (event.keyCode==32) {
                                press_space=false;
                        }
                        if (event.keyCode==37) {
                                press_left=false;
                        }
                        if (event.keyCode==38) {
                                press_up=false;
                        }
                        if (event.keyCode==39) {
                                press_right=false;
                        }
                        if (event.keyCode==40) {
                                press_down=false;
                        }
                }
        }
}

Суть проблемы в том, что приёмник события начинает работаь
Код AS3:

 
private function key_down(event:KeyboardEvent) {
}

только после того как один раз "клацнуть" по области ролика.
Ивенты
Код AS3:

MouseEvent.CLICK

использовал, но они никак не относятся к классу Keys.
Буду очень благодарен за помощь!

Zebestov 11.01.2012 01:21

Дело не в клике, как таковом, а в том, что события с клавиатуры флеш приложение начинает получать только когда оно в фокусе. И фокус этот мы даем флешке именно кликнув на нее.
Именно для этого прежде, чем начинать слушать клавиатуру, мы всегда предлагаем пользователю хоть что-то нажать мышкой, чтобы он, сам того не понимая, создал необходимые условия для работы с клавиатурой.

Aveyder93 11.01.2012 02:12

Ясно, первая мысль тоже была такая, только не понял до конца, почему фокус пропадает. В таком случае добавлю что-то кликабельное. Спасибо!


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

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