欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Flex 自動獲取焦點(diǎn) 監(jiān)聽全局鍵盤事件

 更新時(shí)間:2009年07月13日 00:03:02   作者:  
Flex 編程注意之自動獲取焦點(diǎn)、監(jiān)聽全局鍵盤事件
這是《Flex第一步》QQ群里面一個(gè)朋友問我的問題,特此拿出分享一下?;蛟S問題比較簡單,還是將其記錄一下比較好。
需求如下:
當(dāng)AIR啟動后,監(jiān)聽全局鍵盤事件,即this.addEventListener( KeyboardEvent.KEY_DOWN, keydownHandler );
運(yùn)行后效果:
當(dāng)AIR運(yùn)行后,雖然正確監(jiān)聽了KeyboardEvent.KEY_DOWN event,但是必須要鼠標(biāo)點(diǎn)擊一下AIR才可以獲取keydownHandler。
原因:
1、keydownHandler的獲取需要監(jiān)聽的對象獲得焦點(diǎn),當(dāng)mouse click AIR后,則相當(dāng)于獲取焦點(diǎn)。
2、只有當(dāng)監(jiān)聽的對象獲取焦點(diǎn)后,才能出接收到KeyboardEvent.KEY_DOWN event。
因此問題根結(jié):
如何讓監(jiān)聽對象自動獲取焦點(diǎn)。
解決方案:(步驟)
1、
this.dispatchEvent( new MouseEvent( MouseEvent.CLICK ));
通過以上的方式即可讓程序“自動點(diǎn)擊”dispatchEvent的對象。
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)聽ouseEvent.CLICK event
this.addEventListener( MouseEvent.CLICK, clickHandler );
//監(jiān)聽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
}
自動觸發(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來處理是因?yàn)楫?dāng)create complete后,直接使用dispatchEvent會發(fā)現(xiàn)stage尚未賦值,因此需要延時(shí)一段時(shí)間處理。
注意:以上代碼適用于AIR,在Flex里面按照如下寫法仍舊無法獲取KeyboardEvent.KEY_DOWN event。
Flex里面是如何自動獲取焦點(diǎn)、監(jiān)聽全局鍵盤事件的呢?
原因:
Flex由于有瀏覽器的包裹,因此當(dāng)打開瀏覽器后,由于SWF尚未獲取焦點(diǎn),因此就算自動獲取了焦點(diǎn)(dispatchEvent( new MouseEvent( MouseEvent.CLICK ));)也是沒有意義的。
解決方法:
在嵌入SWF的html里面加入如下的功能:
<body onload="document.getElementById('swf id').focus()">
這句話的含義:當(dāng)onload完畢后,自動設(shè)定SWF為焦點(diǎn)狀態(tài)。
最后再按照AIR的寫即可完成自動獲取焦點(diǎn)、監(jiān)聽全局鍵盤事件。
由于代碼比較少,因此就不放上demo了,以上的片段代碼足以說明問題:)

相關(guān)文章

  • Flex dynamic 關(guān)鍵字的用法

    Flex dynamic 關(guān)鍵字的用法

    Flex dynamic 關(guān)鍵字使用實(shí)例代碼。對于學(xué)習(xí)flex的朋友也許有所幫助。
    2009-05-05
  • Flex 非常實(shí)用的學(xué)習(xí)資料整理

    Flex 非常實(shí)用的學(xué)習(xí)資料整理

    對于學(xué)習(xí)flex 的朋友,絕對是個(gè)不錯(cuò)的一些資料,大家可以用ctrl+F搜索獲取
    2009-01-01
  • 存取flex屏幕快照

    存取flex屏幕快照

    flex 屏幕快照實(shí)現(xiàn)代碼
    2009-05-05
  • Flex addChild()方法注意事項(xiàng)

    Flex addChild()方法注意事項(xiàng)

    在Flex Application里,是不能直接用addChild添加Sprite,MovieClip等來自flash.display包里的類的。
    2009-08-08
  • Flex程序開發(fā)心得小結(jié)

    Flex程序開發(fā)心得小結(jié)

    和Flash的開發(fā)環(huán)境相比,F(xiàn)lex提供的組件庫確實(shí)很誘人,但由于功能太全面,導(dǎo)致程序的體積大,有時(shí)候使用不當(dāng),可能會影響程序運(yùn)行效率。
    2008-04-04
  • flex編程動態(tài)生成圖像

    flex編程動態(tài)生成圖像

    程序需求:動態(tài)生成柱形圖,柱形條數(shù)不確定,柱形字段不確定
    2008-12-12
  • Flex clipContent 編程注意

    Flex clipContent 編程注意

    在做Flex項(xiàng)目的時(shí)候,碰到了一個(gè)修改,具體請看下面的原型圖
    2009-07-07
  • Flex httpservice返回值類型和處理

    Flex httpservice返回值類型和處理

    這兩天在考慮flex與后端java服務(wù)交互的問題。在采用BlazeDS的Remote Object方式,還是傳統(tǒng)的http service方式之間徘徊了一段時(shí)間
    2009-02-02
  • Flex Flash的關(guān)系分析

    Flex Flash的關(guān)系分析

    最近看時(shí)學(xué)習(xí)Flex應(yīng)用,開始對Flex和Flash的關(guān)系有些模糊,讀了Oreilly的Programming Flex 2才算是明白些,現(xiàn)記下。
    2009-06-06
  • Flex Data Binding詳解

    Flex Data Binding詳解

    Data BindIng簡單的說就是當(dāng)綁定源屬性發(fā)生變化時(shí),F(xiàn)lex 會把綁定源變化后屬性的值賦給目的物的屬性。做到了數(shù)據(jù)同步。
    2009-09-09

最新評論