ActionScript - события клавиатуры без этапа? - PullRequest
3 голосов
/ 23 июня 2011

правда ли, что события клавиатуры не доступны за пределами сцены на неэкранных объектах?

пример:

package
{
//Imports
import flash.events.EventDispatcher;
import flash.events.KeyboardEvent;

//Class
public class TestClass extends EventDispatcher
    {
    //Constructor
    public function TestClass()
        {
        init();
        }

    //Initialization
    public function init():void
        {
        addEventListener(KeyboardEvent.KEY_UP, keyUpEventHandler);
        }

    //Key Up Event Handler
    private function keyUpEventHandler(evt:KeyboardEvent):void
        {
        trace("Test Class:  " + evt.keyCode);
        }
    }
}

здесь я хотел бы инициализировать new TestClass(), затем нажать a на клавиатуре, чтобы получить вывод Тестовый класс: a .

1 Ответ

6 голосов
/ 23 июня 2011

Насколько мне известно (и в соответствии с примером aliveocs ) вам необходимо добавить прослушиватель KeyboardEvent к displayObject.Я сделал это в абстрактных и статических классах, передав ссылку на stage (или любой displayObject) методу init или конструктору вашего класса.

Так, например, в вашем классе документа вы можете сделать:

var testClass:TestClass = new TestClass();
testClass.init(stage);

и в TestClass.as делают:

public function init(stageReference:DisplayObject):void
{
   stageReference.addEventListener(KeyboardEvent.KEY_UP, keyUpEventHandler);
}

Хотя я согласен, что это немного странно, я не думаю, что есть способ сделать это без использования DisplayObject.

...