Flex的事件(十四)
生活随笔
收集整理的這篇文章主要介紹了
Flex的事件(十四)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、?? 關于鍵盤事件<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 程序響應一個按鍵或一系列按鍵并執行一些動作,例如Control+q退出程序。Flex支持所有來自后臺操作系統的所有組合鍵操作,它同樣允許你覆蓋或捕獲任何按鍵或組合鍵愛執行一個用戶自定義動作。
?
1.???? 處理鍵盤事件 在一些情況下,你希望捕捉全局的按鍵事件,不管用戶在程序的哪個地方,他們的按鍵操作都會被程序檢測到,并且動作會被執行。F?
一個處理全局按鍵事件的通用方法是在application上創建一個KeyboardEvent.KEY_DOWN或KeyboardEvent.KEY_UP事件監聽器。不管焦點在哪兒(只要焦點在程序中,而不是在瀏覽器控件上或瀏覽器之外),只要鍵盤被敲擊,application容器上的監聽器都將被觸發。在處理器內,你可以使用KeyboardEvent類的charCode和keyCode屬性檢查鍵位碼或者字符碼,如下所示:?
| <!-- events/TrapAllKeys.mxml --> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="initApp();"> <mx:Script><![CDATA[ private function initApp():void { application.addEventListener(KeyboardEvent.KEY_UP, keyHandler); } private function keyHandler(event:KeyboardEvent):void { t1.text = event.keyCode + "/" + event.charCode; } ]]></mx:Script> <mx:TextInput id="myTextInput"/> <mx:Text id="t1"/> </mx:Application> |
?
要運行這個例子,你必須首先將焦點設定到程序中的某個東西上,例如文本輸入控件。?
因為任何集成了UIComponent的類都可以調度keyUp和keyDown事件,你也可以捕捉當焦點位于特定組件內時的鍵盤敲擊事件。如下所示:?
| <?xml version="1.0"?> <!-- events/TrapKeysOnTextArea.mxml --> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="initApp();"> <mx:Script><![CDATA[ private function initApp():void { myTextInput.addEventListener(KeyboardEvent.KEY_UP, keyHandler); } private function keyHandler(event:KeyboardEvent):void { t1.text = event.keyCode + "/" + event.charCode; } ]]></mx:Script> <mx:TextInput id="myTextInput"/> <mx:Text id="t1"/> </mx:Application> |
?
2.???? 了解鍵位碼和字符碼屬性 你可以通過訪問keyCode和harCode屬性來確定到底是哪個鍵被敲擊,并觸發另一個動作作為結果。keyCode屬性是一個數字值,它相當鍵盤上的建的值;charCode屬性是建在當前字符集中的數字值(默認的字符集是UTF-8)。兩者主要的區別在于,keyCode描述了鍵盤上的一個特殊的建(第一行中的1和小鍵盤中的1是不同的鍵,但第一行的1和!是相同的鍵),charCode描述了一個特殊的字符(R和r是不同的)。?
???????? 鍵和鍵位值的映射關系依賴于設備(鍵盤)和操作系統。?
???????? 下面的例子展示了你敲擊的鍵的字符和鍵位碼:?
| <?xml version="1.0"?> <!-- charts/ShowCharAndKeyCodes.mxml --> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="init()"> <mx:Script><![CDATA[ import flash.events.KeyboardEvent; private function init():void { ti1.setFocus(); this.addEventListener(KeyboardEvent.KEY_DOWN, trapKeys); } private function trapKeys(e:KeyboardEvent):void { ta1.text = String(e.toString()); l1.text = numToChar(e.charCode) + " (" + String(e.charCode) + ")"; l2.text = numToChar(e.keyCode) + " (" + String(e.keyCode) + ")"; } private function numToChar(num:int):String { if (num > 47 && num < 58) { var strNums:String = "0123456789"; return strNums.charAt(num - 48); } else if (num > 64 && num < 91) { var strCaps:String = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; return strCaps.charAt(num - 65); } else if (num > 96 && num < 123) { var strLow:String = "abcdefghijklmnopqrstuvwxyz"; return strLow.charAt(num - 97); } else { return num.toString(); } } ]]></mx:Script> <mx:TextInput width="50%" id="ti1"/> <mx:Canvas id="mainCanvas" width="100%" height="100%"> <mx:Form> <mx:FormItem label="Char (Code)"> <mx:Label id="l1"/> </mx:FormItem> <mx:FormItem label="Key (Code)"> <mx:Label id="l2"/> </mx:FormItem> <mx:FormItem label="Key Event"> <mx:TextArea id="ta1" width="500" height="200" editable="false"/> </mx:FormItem> </mx:Form> </mx:Canvas> </mx:Application> |
?
你可以通過使用條件運算符來監聽特定的鍵或組合鍵:?
| <?xml version="1.0"?> <!-- events/TrapQKey.mxml --> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="initApp();"> <mx:Script><![CDATA[ private function initApp():void { application.addEventListener(KeyboardEvent.KEY_UP,keyHandler); // Set the focus somewhere inside the application. ta1.setFocus(); } //This function quits the application if the user presses Shift+Q. private function keyHandler(event:KeyboardEvent):void { var bShiftPressed:Boolean = event.shiftKey; if (bShiftPressed) { var curKeyCode:int = event.keyCode; if (curKeyCode == 81) { // 81 is the keycode value for the Q key /* Quit the application by closing the browser using JavaScript. This may not work in all browsers. */ var url:URLRequest = new URLRequest("javascript:window.close()"); navigateToURL(url,"_self"); } } } ]]></mx:Script> <mx:TextArea id="ta1" text="Focus here so that Shift+Q will quit the browser."/> </mx:Application> |
?
轉載于:https://blog.51cto.com/flexria/154542
總結
以上是生活随笔為你收集整理的Flex的事件(十四)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 就算忘了自己也忘不了你
- 下一篇: 双击treeView的节点时使不展开不折