2011-07-13 50 views
0

我試圖在登錄屏幕中通知用戶CapsLock是否打開。在creationComplete Keyboard.capslock中總是返回false。有沒有解決方法?這裏是我嘗試:Flex Keyboard.capslock在creationComplete中始終返回false

protected function application1_creationCompleteHandler(event:FlexEvent):void 
{ 
    callLater(setListener); 
} 

private function setListener():void 
{ 
    if (Keyboard.capsLock) 
    { 
     lblCapsLock.visible = true; 
    } 
    else 
    { 
     lblCapsLock.visible = false; 
    } 

    stage.addEventListener(KeyboardEvent.KEY_DOWN, application1_keyDownHandler); 
} 

protected function application1_keyDownHandler(event:KeyboardEvent):void 
{ 
    if (event.keyCode == Keyboard.CAPS_LOCK) 
    { 
     if (Keyboard.capsLock) 
     { 
      lblCapsLock.visible = true; 
     } 
     else 
     { 
      lblCapsLock.visible = false; 
     } 
    } 
} 

有在Adobe錯誤和問題管理系統報告了一個錯誤:http://bugs.adobe.com/jira/browse/FP-2033

我不知道爲什麼它在狀態不能重現

+0

我測試過了,它似乎沒問題。很奇怪...順便說一句,只是一個建議來optimeze你的代碼:lblCapsLock.visible = Keyboard.capsLock。 –

+0

對我來說它不起作用。如果我在創建完成之前點擊階段,則如果caps處於打開狀態,則會顯示標籤。一些如何我需要將焦點設置爲應用程序,然後Keyboard.capsLock是真實的。 –

+1

@ J.Lantinen,我認爲應用程序確實需要操作系統的重點才能訪問鍵盤。這真的是一個問題嗎?難道你不能爲focusIn添加一個事件監聽器而不是creationComplete?或兩者? –

回答

1

老話題,但是這可能幫助別人...發現wmode設置爲透明時,keyboard.capsLock值始終爲false。或者它可能只是swfobject特定的。