【问题标题】:ActionScript - Keyboard Events Without Stage?ActionScript - 没有舞台的键盘事件?
【发布时间】:2011-09-21 12:08:24
【问题描述】:

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

示例:

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 接收输出Test Class: a

【问题讨论】:

    标签: actionscript-3 events keyboard stage


    【解决方案1】:

    据我所知(并根据livedocs 示例),您需要将 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 是没有办法的。

    【讨论】:

      猜你喜欢
      • 2011-12-05
      • 1970-01-01
      • 2014-03-03
      • 2015-12-16
      • 1970-01-01
      • 2011-09-05
      • 1970-01-01
      • 2011-01-05
      • 2013-01-20
      相关资源
      最近更新 更多