1

我需要检查是否按下了任何键。

我正在使用此代码。当我运行它时,除非我单击 laszlo 屏幕,否则它什么也不做,为什么会发生这种情况?

<canvas height="250" debug="true">
     <debug height="90%" />
     <handler name="onkeydown" reference="lz.Keys" args="k">
       Debug.debug("key %w %s", k, "down");
     </handler>
    <handler name="onkeyup" reference="lz.Keys" args="k">
      Debug.debug("key %w %s", k, "up");
    </handler>
    <method name="pressA" args="ignore=null">
      Debug.debug("A pressed");
    </method>
     <handler name="oninit">
      var del = new LzDelegate(this, "pressA");
       lz.Keys.callOnKeyCombo(del, ["A"]);
    </handler>


 </canvas>
4

1 回答 1

1

现在假设您指的是 SWF 运行时,因为您提到的是 3.3。keydown 的处理由浏览器或浏览器中的 Flash 插件管理 - 它不是共享的。只要 Flash 组件没有焦点,所有事件都会发送到浏览器。一旦 Flash 获得焦点,它将尝试捕获所有事件,从而在 Flash 和浏览器之间创建屏障。

在我的操作系统上,Ctrl-o 映射为使用浏览器打开文件。在浏览器中加载 Flash 影片时,如果 Flash 具有焦点,则 Ctrl-O 命令将不起作用。当我点击地址栏时,它又开始工作了。SO上有很多关于SWF/浏览器焦点行为的问题。

于 2012-08-24T14:39:41.993 回答