privatefunctionOnKeyDown(event:KeyboardEvent):void{_Msg.text+="Ctrl:"+" />

亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Flex通信篇——Flex鍵盤組合鍵

系統(tǒng) 2664 0

<![CDATA[

Flex中的鍵盤事件

要在Flex中響應鍵盤輸入,只需注冊keyDown事件即可。

<mx:Application xmlns:mx=" http://www.adobe.com/2006/mxml " layout=" absolute " keyDown="OnKeyDown(event)" >

<mx:Script>

private function OnKeyDown(event:KeyboardEvent): void

{

_ Msg.text += "Ctrl:" + event.ctrlKey + ", Key:" + event.keyCode + "/n" ;

}

捕捉單鍵盤輸入時keyDown事件能夠很好的工作,但是,要處理組合鍵時keyDown事件就有問題了,例如:Ctrl+C,Ctrl鍵能夠捕捉到,但C就失效了。

折中的辦法,處理組合鍵時用keyUp事件。

<mx:Application xmlns:mx=" http://www.adobe.com/2006/mxml " layout=" absolute " keyUp="OnKeyUp(event)" >

<mx:Script>

private function OnKeyUp(event:KeyboardEvent): void

{

_Msg.text += "Ctrl:" + event.ctrlKey + ", Key:" + event.keyCode + "/n" ;

}

使用keyUp事件,雖然能夠響應了組合鍵,但還是存在問題,按鍵不靈活,而且要Up時才觸發(fā)事件,達不到一般軟件的組合鍵效果,手感差。所以,需要從外部應用程序截獲keyDown事件,再傳給Flex。

真·組合鍵

Flex端

定義并注冊OnExternalKeyDown方法,讓外部應用程序調(diào)用,參數(shù)按實際情況進行設計。

<mx:Application xmlns:mx=" http://www.adobe.com/2006/mxml " layout=" absolute " creationComplete="Init()" >

<mx:Script>

private function Init(): void

{

// 注冊外部方法

flash.external.ExternalInterface.addCallback( "OnExternalKeyDown" , OnExternalKeyDown)

}

private function OnExternalKeyDown(keyCode:uint, alt:Boolean, shift:Boolean, ctrl:Boolean): void

{

_Msg.text += "Ctrl:" + ctrl + ", Key:" + keyCode + "/n" ;

}

EXE端

為ShockwaveFlashObject控件注冊PreviewKeyDown事件,并添加實現(xiàn)方法。

axShockwaveFlash1.PreviewKeyDown += new PreviewKeyDownEventHandler (axShockwaveFlash1_PreviewKeyDown);

void axShockwaveFlash1_PreviewKeyDown( object sender, PreviewKeyDownEventArgs e)

{

//注意:參數(shù)的順序必須跟Flex所定義方法的參數(shù)順序一致

StringBuilder sb = new StringBuilder ();

sb.Append( "<invoke name=/"OnExternalKeyDown/" returntype=/"xml/">" );

sb.Append( "<arguments>" );

sb.Append( "<number>" ).Append(e.KeyValue).Append( "</number>" );

sb.Append( "<" ).Append(e.Alt.ToString().ToLower()).Append( "/>" );

sb.Append( "<" ).Append(e.Shift.ToString().ToLower()).Append( "/>" );

sb.Append( "<" ).Append(e.Control.ToString().ToLower()).Append( "/>" );

sb.Append( "</arguments>" );

sb.Append( "</invoke>" );

axShockwaveFlash1.CallFunction(sb.ToString());

}

運行EXE,按組合鍵,效果跟一般軟件的組合鍵效果一樣,手感回來了。

Flex通信篇——Flex鍵盤組合鍵

總結

Flex的鍵盤事件問題應該是flash player的Bug,F(xiàn)lex SDK官方上的大牛說目前無法解決,期待以后的版本吧。

這問題是細節(jié)問題,做事就要注重細節(jié),時刻注重用戶體現(xiàn),追求用戶體現(xiàn)才能開發(fā)出讓用戶滿意的軟件。

世界是平的,如果不平,就由自己來鏟平。

.net在windows上的優(yōu)勢,不是AIR能夠比擬的,相對的,flex/flash在呈現(xiàn)渲染上的技術沉淀也不是.net所比擬的,充分結合兩種技術優(yōu)勢能夠做出更完美的RIA軟件。

系列索引

Flex通信篇——Flex和外部應用程序進行通信

Flex通信篇——Flex和外部進行異步通信

Flex通信篇——Flex鍵盤組合鍵

Flex通信篇——構建企業(yè)級HTTP通信層

]]>

Flex通信篇——Flex鍵盤組合鍵


更多文章、技術交流、商務合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产欧美日韩一区二区三区视频 | 久久久久久极精品久久久 | 欧美午夜在线观看理论片 | 成年女人在线视频 | 免费香蕉依人在线视频久 | 久久久久久久国产精品视频 | 9999人体做爰大胆 | 久久综合精品不卡一区二区 | 欧美精品亚洲精品日韩经典 | 亚洲综合久久久久久888 | 黄色影院在线观看 | 国产一区二区三区影院 | 99精品欧美一区 | 美女牲交视频一级毛片 | 国产欧美亚洲精品综合在线 | 成人久草| 欧美日韩一区二区高清视 | 黄页免费观看1 | 精品日本一区二区 | 99热播在线观看 | 伊人骚| 久久爱成人网 | 国产亚洲欧美另类久久久 | 久久不射影院 | 99久久精品国产免看国产一区 | 国产精品19p | 亚洲国产精品一区二区首页 | 精品国产欧美一区二区三区成人 | 鲁丝一区| 亚洲综合精品一区 | 日日干干 | 久久久噜噜噜久久老司机 | 久青草国产手机视频免费观看 | 7777精品久久久大香线蕉 | 中文乱码在线观看 | 国产高清免费午夜在线视频 | 一级毛片免费观看久 | 91视频免费观看高清观看完整 | 中文字幕亚洲综合久久菠萝蜜 | 日本高中生一级乇片 | 亚洲日本va中文字幕婷婷 |