在非显示对象的舞台外无法访问键盘事件是真的吗?

例子:

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/

10-12 02:29