as3 AIR Win- 在全屏窗口中防止 ALT+空格键

Posted

技术标签:

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

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

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

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

http://blog.six4rty.ch/2010/11/09/air-quick-hint-suppress-keyboard-events/

http://inflagrantedelicto.memoryspiral.com/2009/12/adobe-air-preventing-users-from-closing-the-app/

Disable certain key's default action

但没有运气。 我试过像这样使用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) 进行调试,没有区别。

【问题讨论】:

【参考方案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 然后下一个键不会调度任何事件。

以上是关于as3 AIR Win- 在全屏窗口中防止 ALT+空格键的主要内容,如果未能解决你的问题,请参考以下文章

全屏居中 AIR 应用程序

Qt全屏窗口隐藏Win8/10触摸键盘

Adobe AIR 全屏(OS X Mavericks)菜单栏

防止 MPMoviePlayerController 在全屏时旋转和缩放为纵向

Pygame 窗口在全屏模式下没有响应

在 GTK+ 中让窗口显示在全屏窗口上方