ActionScript - события клавиатуры без этапа?
Правда ли, что события клавиатуры не доступны за пределами сцены на неэкранных объектах?
пример:
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 ответ
Решение
Насколько мне известно (и в соответствии с примером aliveocs), вам нужно добавить прослушиватель KeyboardEvent к displayObject. Я сделал это в абстрактных и статических классах, передав ссылку на сцену (или любой 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.