在非显示对象的舞台外无法访问键盘事件是真的吗?
例子:
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 。 最佳答案
据我所知(根据 livedocs 示例),您需要向 displayObject 添加一个 KeyboardEvent 监听器。我通过将舞台(或任何显示对象)的引用传递给类的 init 方法或构造函数,在抽象和静态类中完成了此操作。
因此,例如,在您的文档类中,您可以执行以下操作:
var testClass:TestClass = new TestClass();
testClass.init(stage);
在 TestClass.as 中:
public function init(stageReference:DisplayObject):void
{
stageReference.addEventListener(KeyboardEvent.KEY_UP, keyUpEventHandler);
}
虽然我同意它有点不稳定,但我认为没有使用 DisplayObject 的方法可以做到这一点。
关于actionscript-3 - ActionScript - 没有舞台的键盘事件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6459313/