Flex 自動獲取焦點 監聽全域性鍵盤事件

2021-06-16 05:35:49 字數 1261 閱讀 9519

這是《flex第一步》qq群裡面乙個朋友問我的問題,特此拿出分享一下。或許問題比較簡單,還是將其記錄一下比較好。

需求如下:

當air啟動後,監聽全域性鍵盤事件,即this.addeventlistener( keyboardevent.key_down, keydownhandler );

執行後效果:

creationcomplete="createcompletehandler (event)">

private function createcompletehandler( event : flexevent ) : void

private function clickhandler( event : mouseevent ) : void

private function keydownhandler( event : keyboardevent ) : void

自動觸發mouse click的**:(以下**在this.addeventlistener( keyboardevent.key_down, keydownhandler );的下面)

var timer : timer = new timer( 100, 1 );

timer.addeventlistener( timerevent.timer_complete, function ( event : timerevent ) : void

); timer.start();

之所以用timer來處理是因為當create complete後,直接使用dispatchevent會發現stage尚未賦值,因此需要延時一段時間處理。

注意:以上**適用於air,在flex裡面按照如下寫法仍舊無法獲取keyboardevent.key_down event。

flex裡面是如何自動獲取焦點、監聽全域性鍵盤事件的呢?

原因:

flex由於有瀏覽器的包裹,因此當開啟瀏覽器後,由於swf尚未獲取焦點,因此就算自動獲取了焦點

dispatchevent( new mouseevent( mouseevent.click ));

也是沒有意義的。

解決方法:

在嵌入swf的html裡面加入如下的功能:

這句話的含義:當onload完畢後,自動設定swf為焦點狀態。

最後再按照air的寫即可完成自動獲取焦點、監聽全域性鍵盤事件。

由於**比較少,因此就不放上demo了,以上的片段**足以說明問題:)

Dialog 獲取焦點的監聽

dialog 獲取焦點的監聽 dialog依附在activity上。現在dialog彈出的時候要讓 activity的介面做相應的邏輯。dialog消失的時候,也要讓activity介面做相應的動作。上網查了半天沒有這個監聽。最後在activity的生命週期上找到了解決辦法。因為activity 和...

vue全域性指令 獲取焦點

知識點 bind函式 和樣式相關的操作,一般都可以在 bind 中執行,繫結到元素上的時候,立即執行 bind函式,且只執行一次 注意 在每個函式中,第乙個引數永遠是 el,表示被繫結了指令的那個元素,這個 el引數是乙個元素的原生的js物件 inserted函式 和js行為有關的操作,最好在 in...

uniapp 自動獲取焦點

首先得在 input 元素上設定 foucs 屬性,並且繫結乙個變數。然後將變數在 data 裡面初始化為 false。firstfocus false然後再 methods 裡繫結方法,初始化 focus 屬性後就可以將任意乙個的 input 元素獲取焦點了。第乙個文字框 change 事件 fi...