簡體   English   中英

在Flex中檢測alt keyDown鍵盤事件

[英]Detecting alt keyDown keyboard event in Flex

我正在嘗試檢測flex中alt鍵的按下事件。 我有用於KeyboardEvent.KEY_DOWN和KeyboardEvent.KEY_UP的標准事件偵聽器,但沒有對alt鍵(或ctrl鍵)有任何響應。

我知道我可以檢測是否通過鼠標事件按下了alt鍵,但是我想在按下alt鍵時更新光標,以顯示與未按下時會執行不同的操作。

我正在Mac上使用Safari進行開發,所以請讓我知道這是否是一個孤立的問題。

我前面沒有Flex環境,但我認為修飾鍵(在您的情況下為Shift,Control和Option)不會表示鍵盤事件。 如果我是對的,您仍然可以通過測試每個MouseEvent上的控件和alt鍵的狀態,並適當地更新光標狀態,來獲得所需的大部分內容。

在后台連續采樣選項鍵的狀態也可能有用,但是我不記得如何在沒有接口事件起作用的情況下獲取鍵盤狀態。 祝你好運。

嘗試這個:

component.addEventListener( KeyboardEvent.KEY_DOWN, keyDownHandler, true );
component.addEventListener( KeyboardEvent.KEY_UP, keyUpHandler, true );

protected function keyDownHandler( event:KeyboardEvent ):void
{
    states[ event.keyCode >>> 3 ] |= 1 << (event.keyCode & 7);
}

protected function keyUpHandler( event:KeyboardEvent ):void
{
    states[ event.keyCode >>> 3 ] &= ~(1 << (event.keyCode & 7));
}

然后您可以像這樣檢查某個鍵是否按下:

public function isKeyDown( keyCode:uint ):Boolean
{
    return ( states[ keyCode >>> 3 ] & (1 << (keyCode & 7)) ) != 0;
}

正如stef指出的那樣,這似乎是Safari中的錯誤。

可以使用JavaScript將事件傳遞給Flash來解決此問題,盡管我不確定如果將Flash電影作為焦點,JavaScript是否會獲取事件。

以下是一些有關如何執行此操作的示例:從javascript到actionscript按鍵傳遞實用程序?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM