as3 rollOver or mouseOver使用說明
更新時間:2009年10月30日 13:15:50 作者:
rollOver與mouseOver同樣在鼠標(biāo)移到目標(biāo)上時觸發(fā)事件,細(xì)微區(qū)別在于,mouseOver的bubbles等于true,而rollOver的bubbles是false.
所以當(dāng)監(jiān)聽MouseEvent.ROLL_OVER事件后,鼠標(biāo)移動到panel的幾個按鈕時,程序仍然認(rèn)為鼠標(biāo)懸停在panel上方。假設(shè)我們監(jiān)聽MouseEvent.MOUSE_OVER, 隨著鼠標(biāo)移到panel的按鈕上,程序立刻判斷鼠標(biāo)離開了panel,已經(jīng)到了按鈕上方——這個結(jié)果不是我們需要的,此時本應(yīng)去單擊按鈕,結(jié)果程序判斷鼠標(biāo)離開panel,會直接removeChild或者visible=false。
關(guān)于冒泡的話,不得不提AS3的事件流,簡單的說就是一個捕捉——目標(biāo)——冒泡的循環(huán)過程:事件發(fā)生后,先從顯示層中的根容器開始往下層級逐個捕捉直至到達(dá)派發(fā)事件的目標(biāo)對象后向上返回冒泡,而這一事件中的target屬性始終指向最內(nèi)層的派發(fā)事件目標(biāo),currentTarget則顧名思義指向事件流中當(dāng)前所在的對象。
事件發(fā)生后,從根節(jié)點到目標(biāo)節(jié)點的父節(jié)點,這中間所有節(jié)點都有兩次機(jī)會可以響應(yīng)事件,分別在捕獲和冒泡階段。在事件流經(jīng)過的任意節(jié)點上注冊偵聽器都會觸發(fā)。當(dāng)然前提是打開了捕獲和冒泡功能。
默認(rèn)情況下,捕獲功能處于關(guān)閉狀態(tài),因為實際開發(fā)中,監(jiān)聽目標(biāo)很明確,沒必要捕獲。
而事件只有在bubbles屬性為true時才進(jìn)行冒泡,默認(rèn)冒泡的事件包括:change,click,doubleClick,keyDown,keyUp,mouseDown,mouseUp。一旦捕獲打開,默認(rèn)的冒泡將被取消。
因此在同一個監(jiān)聽器中不能同時打開捕獲和冒泡,只能注冊兩個監(jiān)聽一個開捕獲一個開冒泡才行。
只有可視化對象(容器,控件)才有捕獲和冒泡階段,而像XML,WebService等非可視化對象只有目標(biāo)階段。
注冊偵聽器方法為:
addEventListener(type:String, listener:Function, useCapture:Boolean=false, priority:int=0, useWeakReference:Boolean=false)
useCapture即為是否打開捕獲功能,
priority為優(yōu)先級設(shè)定,當(dāng)有多個偵聽器時,priority越大,優(yōu)先級越高越先調(diào)用,如果同級的話則按注冊的順序來調(diào)用。這里注意即使優(yōu)先級有先后也無法保證后一個偵聽調(diào)用執(zhí)行時前一個偵聽函數(shù)已執(zhí)行完畢。
useWeakReference為弱引用開關(guān),推薦設(shè)為true,便于垃圾自動回收。但最規(guī)范的還是直接removeEventListener。注意當(dāng)注冊監(jiān)聽器打開了捕獲,則removeEventListener(type:String, listener:Function, useCapture:Boolean=false)的useCapture必須設(shè)為true,否則無效
事件對象的構(gòu)造方法為:
Event(type:String, bubbles:Boolean=false, cancelable:Boolean=false)
bubbles即為是否冒泡
cancelable為true時可以調(diào)用PreventDefault方法停止系統(tǒng)默認(rèn)的行為。比如輸入文本,默認(rèn)行為會馬上顯示在文本區(qū),當(dāng)cancelable為true時調(diào)用PreventDefault方法讓字符不出現(xiàn)。
另外,Event還有兩個方法可以停止事件流的繼續(xù)傳播,stopPropagation和stopImmediatePropagation,區(qū)別在于前者不會停止正在處理的對象。而后者還會停止同一object上的其他偵聽器。
關(guān)于冒泡的話,不得不提AS3的事件流,簡單的說就是一個捕捉——目標(biāo)——冒泡的循環(huán)過程:事件發(fā)生后,先從顯示層中的根容器開始往下層級逐個捕捉直至到達(dá)派發(fā)事件的目標(biāo)對象后向上返回冒泡,而這一事件中的target屬性始終指向最內(nèi)層的派發(fā)事件目標(biāo),currentTarget則顧名思義指向事件流中當(dāng)前所在的對象。
事件發(fā)生后,從根節(jié)點到目標(biāo)節(jié)點的父節(jié)點,這中間所有節(jié)點都有兩次機(jī)會可以響應(yīng)事件,分別在捕獲和冒泡階段。在事件流經(jīng)過的任意節(jié)點上注冊偵聽器都會觸發(fā)。當(dāng)然前提是打開了捕獲和冒泡功能。
默認(rèn)情況下,捕獲功能處于關(guān)閉狀態(tài),因為實際開發(fā)中,監(jiān)聽目標(biāo)很明確,沒必要捕獲。
而事件只有在bubbles屬性為true時才進(jìn)行冒泡,默認(rèn)冒泡的事件包括:change,click,doubleClick,keyDown,keyUp,mouseDown,mouseUp。一旦捕獲打開,默認(rèn)的冒泡將被取消。
因此在同一個監(jiān)聽器中不能同時打開捕獲和冒泡,只能注冊兩個監(jiān)聽一個開捕獲一個開冒泡才行。
只有可視化對象(容器,控件)才有捕獲和冒泡階段,而像XML,WebService等非可視化對象只有目標(biāo)階段。
注冊偵聽器方法為:
addEventListener(type:String, listener:Function, useCapture:Boolean=false, priority:int=0, useWeakReference:Boolean=false)
useCapture即為是否打開捕獲功能,
priority為優(yōu)先級設(shè)定,當(dāng)有多個偵聽器時,priority越大,優(yōu)先級越高越先調(diào)用,如果同級的話則按注冊的順序來調(diào)用。這里注意即使優(yōu)先級有先后也無法保證后一個偵聽調(diào)用執(zhí)行時前一個偵聽函數(shù)已執(zhí)行完畢。
useWeakReference為弱引用開關(guān),推薦設(shè)為true,便于垃圾自動回收。但最規(guī)范的還是直接removeEventListener。注意當(dāng)注冊監(jiān)聽器打開了捕獲,則removeEventListener(type:String, listener:Function, useCapture:Boolean=false)的useCapture必須設(shè)為true,否則無效
事件對象的構(gòu)造方法為:
Event(type:String, bubbles:Boolean=false, cancelable:Boolean=false)
bubbles即為是否冒泡
cancelable為true時可以調(diào)用PreventDefault方法停止系統(tǒng)默認(rèn)的行為。比如輸入文本,默認(rèn)行為會馬上顯示在文本區(qū),當(dāng)cancelable為true時調(diào)用PreventDefault方法讓字符不出現(xiàn)。
另外,Event還有兩個方法可以停止事件流的繼續(xù)傳播,stopPropagation和stopImmediatePropagation,區(qū)別在于前者不會停止正在處理的對象。而后者還會停止同一object上的其他偵聽器。
您可能感興趣的文章:
- 兼容ie和firefox的鼠標(biāo)經(jīng)過(onmouseover和onmouseout)實現(xiàn)--簡短版
- javascript mouseover、mouseout停止事件冒泡的解決方案
- 擴(kuò)展Jquery插件處理mouseover時內(nèi)部有子元素時發(fā)生樣式閃爍
- onmouseover和onmouseout的一些問題思考
- JS小功能(onmouseover實現(xiàn)選擇月份)實例代碼
- 經(jīng)過綁定元素時會多次觸發(fā)mouseover和mouseout事件
- jQuery中mouseover事件用法實例
- IE中鼠標(biāo)經(jīng)過option觸發(fā)mouseout的解決方法
- 鼠標(biāo)經(jīng)過子元素觸發(fā)mouseout,mouseover事件的解決方案
相關(guān)文章
Google Analytics在Flash cs3下的使用教程分析
因為工作的原因,最近使用到Google Analytics組件,這個組件在網(wǎng)上的資料很多,但是大部分都是詳談組件的優(yōu)勢的,具體的使用沒有很詳細(xì)的說明2009-02-02ActionScript 3.0中用XMLSocket與服務(wù)器通訊程序(源碼)
一個簡單的基于XMLSocket的封裝類2009-02-02