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+DEL
或ALT+space
,我可以没有它们。问题是ALT
key 当你按下它然后释放它时会有一些奇怪的行为。如果您释放它,则不会检测到下一个键...我想我将不得不使用其他组合键,但这似乎是适合该任务的组合...如果没有其他人有意见?
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+空格键的主要内容,如果未能解决你的问题,请参考以下文章
Adobe AIR 全屏(OS X Mavericks)菜单栏