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

日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

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

系統(tǒng) 2706 0

<![CDATA[

Flex中的鍵盤事件

要在Flex中響應(yīng)鍵盤輸入,只需注冊(cè)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" ;

}

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

折中的辦法,處理組合鍵時(shí)用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事件,雖然能夠響應(yīng)了組合鍵,但還是存在問(wèn)題,按鍵不靈活,而且要Up時(shí)才觸發(fā)事件,達(dá)不到一般軟件的組合鍵效果,手感差。所以,需要從外部應(yīng)用程序截獲keyDown事件,再傳給Flex。

真·組合鍵

Flex端

定義并注冊(cè)O(shè)nExternalKeyDown方法,讓外部應(yīng)用程序調(diào)用,參數(shù)按實(shí)際情況進(jìn)行設(shè)計(jì)。

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

<mx:Script>

private function Init(): void

{

// 注冊(cè)外部方法

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控件注冊(cè)PreviewKeyDown事件,并添加實(shí)現(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());

}

運(yùn)行EXE,按組合鍵,效果跟一般軟件的組合鍵效果一樣,手感回來(lái)了。

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

總結(jié)

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

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

世界是平的,如果不平,就由自己來(lái)鏟平。

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

系列索引

Flex通信篇——Flex和外部應(yīng)用程序進(jìn)行通信

Flex通信篇——Flex和外部進(jìn)行異步通信

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

Flex通信篇——構(gòu)建企業(yè)級(jí)HTTP通信層

]]>

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


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

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

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

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦?。。?/p>

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 舒兰市| 浦江县| 巴塘县| 钟祥市| 于田县| 呼和浩特市| 兴业县| 垦利县| 华坪县| 剑阁县| 文山县| 西宁市| 随州市| 凌源市| 北川| 大埔区| 蓝田县| 资兴市| 阳城县| 西畴县| 山东| 筠连县| 成安县| 兴业县| 都匀市| 沭阳县| 丁青县| 收藏| 和硕县| 容城县| 客服| 武功县| 华池县| 扎囊县| 汉寿县| 诸暨市| 衡水市| 靖西县| 长乐市| 辽宁省| 两当县|