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