2013-04-09 53 views
3

我有一個本地全屏AIR應用程序(從服務器加載多個SWF), ,我試圖使用ALT+<letter>作爲快捷鍵。as3 AIR防止全屏窗口中ALT +空格鍵

但是Windows操作系統攔截了​​鍵,並且例如當我按下ALT+Space時顯示左上角的窗口菜單,這是我想要阻止的。

我發現這些職位,這似乎是一個解決方案:

,但沒有運氣。 我試着使用preventDefault()這樣的:

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

但是,這並不妨礙OS從攔截​​關鍵...

一些線索約缺少什麼?

/感謝 /J

我編譯在Flash CS5.5/Win XP的/ AIR 2.6 有沒有區別,如果我編譯和運行的空氣應用程序,或從Flash IDE剛剛調試( Ctrl+Enter)。

回答

0

你不能阻止,因爲它是一個OS功能。這就像你試圖防止ctrl + alt + del,它不允許。 使用AS3 preventDefault,您只能防止虛擬機的事件,操作系統'冒泡'繼續。你也不會有ANE的運氣,因爲你也不能在C++中做到這一點。

+0

csmoakk,謝謝你的回答! 真正的問題並不是真正阻止'CTRL + ALT + DEL'和'ALT +空格',這是我無法生存的。麻煩的是,當按下ALT鍵時會出現一些奇怪的行爲,然後釋放它。如果你釋放它,那麼下一個鍵沒有被檢測到... 我想我將不得不使用一些其他組合鍵,但這個似乎是正確的任務...如果沒有其他人一些意見? – jenciso 2013-04-10 19:33:12

+0

alt不算作常規密鑰。它在鍵盤事件上的一個參數。所以如果你按ALT鍵,沒有事件被觸發。如果按'h',例如,在按住alt的同時,keycode將是'h'-s,並且altPresset將爲true。然而,Alt可以打開您的瀏覽器菜單,這意味着Flash播放器失去焦點,所以之後點擊的按鍵不會觸發事件,直到您再次單擊Flash。防禦它可以使用全屏交互模式。 – csomakk 2013-04-10 21:44:10

+0

csmoakk,這在AIR中仍然如此嗎?正如我提出的問題,這是一個全屏AIR應用程序... 而在這種情況下,ALT **會觸發KeyboardEvent,並帶有keycode = 18。 如果我按ALT + A鍵,我會觸發兩個鍵盤事件:第一個鍵碼= 18,第二個鍵碼= 65。 我可以檢查'A'並測試event.altKey是否爲true。這不是問題... 問題仍然是,如果我按**並釋放**'ALT',那麼下一個鍵不會分派任何事件。 – jenciso 2013-04-11 14:35:01