The*_*978 3 keyboard events stage actionscript-3
键盘事件是否无法在非显示对象的舞台外访问?
例:
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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
在这里我想初始化一个new TestClass()然后在键盘上按a接收输出测试类:a.
小智 6
据我所知(并根据livedocs示例),您需要将一个KeyboardEvent侦听器添加到displayObject.我已经在抽象和静态类中完成了这个操作,方法是将对stage(或任何displayObject)的引用传递给类的init方法或构造函数.
因此,例如,在您的文档类中,您可以执行以下操作:
var testClass:TestClass = new TestClass();
testClass.init(stage);
Run Code Online (Sandbox Code Playgroud)
在TestClass.as中:
public function init(stageReference:DisplayObject):void
{
stageReference.addEventListener(KeyboardEvent.KEY_UP, keyUpEventHandler);
}
Run Code Online (Sandbox Code Playgroud)
虽然我同意它有点不稳定,但我认为没有使用DisplayObject就可以做到这一点.