【问题标题】:as3 AIR Win- preventing ALT+spacebar in fullscreen windowsas3 AIR Win- 在全屏窗口中防止 ALT+空格键
【发布时间】:2013-04-01 09:09:47
【问题描述】:

我有一个本地全屏 AIR 应用程序(从服务器加载多个 SWF), 我正在尝试使用ALT+<letter> 作为快捷方式。

但是 Windows 操作系统拦截了 ALT 键,例如当我按下 ALT+Space 时显示左上角窗口菜单,这是我想阻止的。

我找到了这些帖子,这似乎是一个解决方案:

但没有运气。 我试过像这样使用preventDefault()

this.stage.addEventListener(KeyboardEvent.KEY_DOWN, ff);
...
function ff(e:KeyboardEvent):void {
                e.preventDefault();
            }

但这并不妨碍操作系统拦截ALT 键...

关于缺少什么的一些线索?

/谢谢 /j

我在 Flash CS5.5 / Win XP / Air 2.6 中编译 如果我编译并运行 Air-app,或者只是从 Flash IDE (Ctrl+Enter) 进行调试,没有区别。

【问题讨论】:

    标签: actionscript-3 flash air addeventlistener


    【解决方案1】:

    你无法阻止它,因为它是一个操作系统功能。就像您试图阻止 ctrl+alt+del 一样,这是不允许的。 使用 AS3 preventDefault,您只能阻止虚拟机的事件,操作系统会继续“冒泡”。使用 ANE 也不会有运气,因为在 c++ 中也无法做到这一点。

    【讨论】:

    • csmoakk,谢谢你的回答!真正的问题不是真正阻止CTRL+ALT+DELALT+space,我可以没有它们。问题是ALTkey 当你按下它然后释放它时会有一些奇怪的行为。如果您释放它,则不会检测到下一个键...我想我将不得不使用其他组合键,但这似乎是适合该任务的组合...如果没有其他人有意见?
    • alt 不算作常规键。它是键盘事件的参数。因此,如果您按 alt,则不会触发任何事件。例如,如果您在按住 alt 的同时按“h”,则键码将为“h”-s,而 altPresset 将为真。但是 Alt 可以打开您的浏览器菜单,这意味着 Flash 播放器失去焦点,因此之后按下的键不会触发事件,直到您再次单击 Flash。防御它可以使用全屏交互模式。
    • csmoakk,在 AIR 中仍然如此吗?正如我提出的问题,它是一个全屏 AIR 应用程序......在这种情况下,ALT 确实触发了一个键盘事件,keycode=18。如果我按下ALT+A,我会触发两个键盘事件:首先是 keycode=18,然后是 keycode=65。我可以检查 A 并测试 event.altKey 是否为真。这不是问题...问题仍然是如果我按下 并释放 ALT 然后下一个键不会调度任何事件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-02
    • 2012-08-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多