最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Flex 自動(dòng)獲取焦點(diǎn) 監(jiān)聽(tīng)全局鍵盤(pán)事件

 更新時(shí)間:2009年07月13日 00:03:02   作者:  
Flex 編程注意之自動(dòng)獲取焦點(diǎn)、監(jiān)聽(tīng)全局鍵盤(pán)事件
這是《Flex第一步》Q(chēng)Q群里面一個(gè)朋友問(wèn)我的問(wèn)題,特此拿出分享一下?;蛟S問(wèn)題比較簡(jiǎn)單,還是將其記錄一下比較好。
需求如下:
當(dāng)AIR啟動(dòng)后,監(jiān)聽(tīng)全局鍵盤(pán)事件,即this.addEventListener( KeyboardEvent.KEY_DOWN, keydownHandler );
運(yùn)行后效果:
當(dāng)AIR運(yùn)行后,雖然正確監(jiān)聽(tīng)了KeyboardEvent.KEY_DOWN event,但是必須要鼠標(biāo)點(diǎn)擊一下AIR才可以獲取keydownHandler。
原因:
1、keydownHandler的獲取需要監(jiān)聽(tīng)的對(duì)象獲得焦點(diǎn),當(dāng)mouse click AIR后,則相當(dāng)于獲取焦點(diǎn)。
2、只有當(dāng)監(jiān)聽(tīng)的對(duì)象獲取焦點(diǎn)后,才能出接收到KeyboardEvent.KEY_DOWN event。
因此問(wèn)題根結(jié):
如何讓監(jiān)聽(tīng)對(duì)象自動(dòng)獲取焦點(diǎn)。
解決方案:(步驟)
1、
this.dispatchEvent( new MouseEvent( MouseEvent.CLICK ));
通過(guò)以上的方式即可讓程序“自動(dòng)點(diǎn)擊”dispatchEvent的對(duì)象。
2、
獲取焦點(diǎn)方式:
this.stage.focus = this; 

<s:WindowedApplication
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/halo"
creationComplete="createCompleteHandler (event)">
private function createCompleteHandler( event : FlexEvent ) : void {
//監(jiān)聽(tīng)ouseEvent.CLICK event
this.addEventListener( MouseEvent.CLICK, clickHandler );
//監(jiān)聽(tīng)KeyboardEvent.KEY_DOWN
this.addEventListener( KeyboardEvent.KEY_DOWN, keyDownHandler );
}
private function clickHandler( event : MouseEvent ) : void {
this.stage.focus = this;
}
private function keyDownHandler( event : KeyboardEvent ) : void {
//TO DO
}
自動(dòng)觸發(fā)mouse click的代碼:(以下代碼在this.addEventListener( KeyboardEvent.KEY_DOWN, keyDownHandler );的下面)
var timer : Timer = new Timer( 100, 1 );
timer.addEventListener( TimerEvent.TIMER_COMPLETE, function ( event : TimerEvent ) : void {
event.target.stop();
dispatchEvent( new MouseEvent( MouseEvent.CLICK ));
});
timer.start();
之所以用timer來(lái)處理是因?yàn)楫?dāng)create complete后,直接使用dispatchEvent會(huì)發(fā)現(xiàn)stage尚未賦值,因此需要延時(shí)一段時(shí)間處理。
注意:以上代碼適用于AIR,在Flex里面按照如下寫(xiě)法仍舊無(wú)法獲取KeyboardEvent.KEY_DOWN event。
Flex里面是如何自動(dòng)獲取焦點(diǎn)、監(jiān)聽(tīng)全局鍵盤(pán)事件的呢?
原因:
Flex由于有瀏覽器的包裹,因此當(dāng)打開(kāi)瀏覽器后,由于SWF尚未獲取焦點(diǎn),因此就算自動(dòng)獲取了焦點(diǎn)(dispatchEvent( new MouseEvent( MouseEvent.CLICK ));)也是沒(méi)有意義的。
解決方法:
在嵌入SWF的html里面加入如下的功能:
<body onload="document.getElementById('swf id').focus()">
這句話的含義:當(dāng)onload完畢后,自動(dòng)設(shè)定SWF為焦點(diǎn)狀態(tài)。
最后再按照AIR的寫(xiě)即可完成自動(dòng)獲取焦點(diǎn)、監(jiān)聽(tīng)全局鍵盤(pán)事件。
由于代碼比較少,因此就不放上demo了,以上的片段代碼足以說(shuō)明問(wèn)題:)

相關(guān)文章

  • java TO ArrayCollection

    java TO ArrayCollection

    因?yàn)閚ew ArrayCollection 需要 array對(duì)象,event.result是空間返回對(duì)象(JAVA方法返回值)所以類(lèi)型不同無(wú)法使用new 構(gòu)造ArrayCollection ,可是惡心的FLEX偏偏支持javalist=ArrayCollection
    2009-06-06
  • Flex和.NET協(xié)同開(kāi)發(fā)利器FluorineFx Flex與.NET互操作

    Flex和.NET協(xié)同開(kāi)發(fā)利器FluorineFx Flex與.NET互操作

    在本系列前面幾篇文章中分別介紹了通過(guò)WebService、HTTPService、URLLoader以及FielReference等組件或類(lèi)來(lái)完成Flex與.NET服務(wù)端的通信的相關(guān)知識(shí)點(diǎn)。
    2009-06-06
  • AS3 Flex基礎(chǔ)知識(shí)100條

    AS3 Flex基礎(chǔ)知識(shí)100條

    找資料的時(shí)候 看到一篇文章很實(shí)用 對(duì)新手的基本問(wèn)題都可以找到,方便查找答案的時(shí)間
    2009-05-05
  • Flex與.NET互操作 使用HttpService、URLReqeust和URLLoader加載/傳輸數(shù)據(jù)

    Flex與.NET互操作 使用HttpService、URLReqeust和URLLoader加載/傳輸數(shù)據(jù)

    在前兩篇文章中分別介紹了Flex與.NET的WebService之間的數(shù)據(jù)交互通信知識(shí),本文將介紹另外一種加載數(shù)據(jù)以及發(fā)起請(qǐng)求的方式。
    2009-06-06
  • Flex 讀取xml文件的方法

    Flex 讀取xml文件的方法

    Flex 讀取xml文件的多種方法小結(jié),大家可以根據(jù)需要自己選擇。
    2009-08-08
  • 最新評(píng)論

    开平市| 南陵县| 秭归县| 铁岭县| 上虞市| 六盘水市| 南通市| 东港市| 延庆县| 甘泉县| 宜宾市| 衡东县| 惠安县| 深水埗区| 桐庐县| 广元市| 昆山市| 平江县| 雅江县| 天镇县| 吉水县| 格尔木市| 全南县| 巴东县| 合水县| 吴忠市| 积石山| 富川| 甘南县| 高邮市| 曲周县| 泸水县| 皮山县| 台北县| 罗城| 泾阳县| 女性| 博湖县| 同德县| 泸西县| 田林县|