Форум 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=138472)

engineer_f_R 08.04.2010 19:33

Реакция на нажатие клавиш.
 
Код AS3:

package 
{
        import flash.display.*;
 
        import flash.events.*;
        public class MainClass extends MovieClip
        {
                var keyboardControl:KeyboardControl = new KeyboardControl ();
 
 
 
                public function MainClass ()
                {
                        addChild(keyboardControl);
                }
        }
 
}

Код AS3:

package {
        import flash.display.*;
        import flash.ui.*;
        import flash.events.*;
        import flash.events.KeyboardEvent;
 
        public class KeyboardControl extends MovieClip {
                var leftKeyIsDown:Boolean=false;
                var rightKeyIsDown:Boolean=false;
                var upKeyIsDown:Boolean=false;
                var downKeyIsDown:Boolean=false;
                var keyPressed:int;
 
 
                public function KeyboardControl():void {
                        addEventListener(KeyboardEvent.KEY_DOWN, keyPressFunction);
                        addEventListener(KeyboardEvent.KEY_UP, keyReleaseFunction);
 
                }
 
 
 
 
                function keyPressFunction(e:KeyboardEvent):void {
                        trace("aaa");
                        keyPressed=e.keyCode;
 
                        if (keyPressed==Keyboard.RIGHT) {
                                rightKeyIsDown=true;
                                trace("aaa");
                        }
                        if (keyPressed==Keyboard.LEFT) {
                                leftKeyIsDown=true;
                        }
                        if (keyPressed==Keyboard.UP) {
                                upKeyIsDown=true;
                        }
                        if (keyPressed==Keyboard.DOWN) {
                                downKeyIsDown=true;
                        }
                }
 
 
                function keyReleaseFunction(e:KeyboardEvent):void {
                        var keyReleaseCode:int=e.keyCode;
                        if (keyReleaseCode==Keyboard.RIGHT) {
                                rightKeyIsDown=false;
 
                        }
                        if (keyReleaseCode==Keyboard.LEFT) {
                                leftKeyIsDown=false;
 
                        }
                        if (keyReleaseCode==Keyboard.UP) {
                                upKeyIsDown=false;
                        }
                        if (keyReleaseCode==Keyboard.DOWN) {
                                downKeyIsDown=false;
                        }
                }
 
 
 
 
        }
 
}

Вот так пишу и никакой реакции на нажатие кнопочек. Что я делаю не так? :o

Psycho Tiger 08.04.2010 19:54

Ваш мувик должен иметь фокус. Он есть? Его нету.
Подписывайте stage.

engineer_f_R 08.04.2010 19:56

Код AS3:

stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPressFunction);
stage.addEventListener(KeyboardEvent.KEY_UP, keyReleaseFunction);

если сделать так, то выдаётся ошибка:
Цитата:

TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".
at KeyboardControl()
at MainClass()

AlexDesinger 08.04.2010 20:04

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


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

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