<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    JAVA & FLEX

    一個(gè)分享java和flex開發(fā)經(jīng)驗(yàn)的空間

       :: 首頁 ::  :: 聯(lián)系 ::  :: 管理 ::
      26 隨筆 :: 2 文章 :: 44 評(píng)論 :: 0 Trackbacks

            在flex中,Event是一個(gè)比較神奇,而且是我們必須經(jīng)常打交道的一個(gè)類,黑羽大哥的一句話很經(jīng)典:平生不識(shí)Event,就稱閃客也枉然,說明了Event在Flash和Flex中的地位。

            那么這個(gè)非常重要的東西,該如何去應(yīng)用呢?在這之前,我們要清楚一個(gè)事情,那就是Event是Object這個(gè)偉大父親的220多個(gè)孩子之一,也就是說,它是直接繼承于Object的。可是我們知道這有什么用處呢,嘿~,用處大啦,因?yàn)檫@代表了Event的貴族氣質(zhì),即:在Event中,級(jí)別高的控件觸發(fā)的事件,在級(jí)別低的控件中是無法被監(jiān)聽到的,怎么樣,夠高傲了吧。
            到了這里,有人會(huì)說,這有點(diǎn)扯了吧,只從這個(gè)就能看出這點(diǎn)嗎?答案當(dāng)然不是啦,原理聽小生一一道來~

            在flex中,事件分成了兩類,一個(gè)是系統(tǒng)事件,一個(gè)自定義事件。系統(tǒng)事件是包含鼠標(biāo)點(diǎn)擊,焦點(diǎn)獲得等等。自定義,顧名思義,是自己定義的事件啦,但是要注意,自定義的事件必須要繼承于Event這個(gè)類,否則,listener是不會(huì)搭理你滴~。那么自定義事件該如何定義呢,下面有一個(gè)例子,會(huì)對(duì)你有幫助。

     import flash.events.Event;
     
     
    public class MyEvent extends Event
     
    {      
         
    public function MyEvent (type:String, nextPage:String, bubbles:Boolean = false, cancelable:Boolean = false{
             
    super(type, bubbles, cancelable);
         }
      
     }


            夠簡單了吧,當(dāng)然,這只是一個(gè)不包含任何其它處理的自定義事件。現(xiàn)在有人可能會(huì)問了,自定義方法中的參數(shù)有啥用,都是干哈的啊?嘿,暫時(shí)保密。

            有了自定義事件,那么我們的下一個(gè)問題就來啦,自定義事件有了,那么該如何觸發(fā),又如何監(jiān)聽呢,別著急啦~~,下面就說。
            在flex中,我們自定義觸發(fā)事件用的是dispatchEvent(Event),里面存放的就是我們上面提到的自定義Event事件~。系統(tǒng)定義的觸發(fā)事件,例如:<mx:Button id="testMs" x="71" y="295" label="Button" click = “”/>鼠標(biāo)點(diǎn)擊的事件等等。
    那么監(jiān)聽的方法呢,監(jiān)聽是這樣來定義的。

     function addEventListener(eventName:String, //事件的KEY
                                 listener:Function,   //事件的方法
                                 useCapture:Boolean=false//確定偵聽器是運(yùn)行于捕獲階段、目標(biāo)階段還是上浮階段。
                                 priority:Integer=0//優(yōu)先級(jí)
                                 useWeakReference:Boolean=false // 是否設(shè)定為弱引用
                                 ):


            怕了吧,是不是參數(shù)很多,和我們平時(shí)用的有點(diǎn)不太一樣,我們平時(shí),一般都是這樣用的

    testMs.addEventListener(MouseEvent.CLICK,changeVboxLabel);,


            后面多出的參數(shù)是什么意思呢?要想清楚知道這些,我們必須要先說明一下flex中事件處理的流程。
            在Flex中,觸發(fā)事件后,流程分為三部分,例如,我們有下面這個(gè)

    <mx:Panel>
        
    <mx:HBox>
            
    <mx:VBox>
                    
    <mx:Button />
            
    </mx:VBox>
        
    </mx:HBox>
    </mx:Panel>


            假設(shè),在<mx:VBox>中觸發(fā)一個(gè)事件。事件的觸發(fā)順序是這樣的,先捕捉,然后目標(biāo),最后上浮。
            捕捉:在我們剛才的假設(shè)中,首先觸發(fā)器會(huì)按<mx:Panel>-><mx:HBox>-><mx:VBox>這個(gè)順序來檢查每個(gè)節(jié)點(diǎn).這個(gè)階段,我們稱為捕捉階段,在addEventListener的構(gòu)造函數(shù)中,我們默認(rèn)是不監(jiān)聽這個(gè)階段的。
            目標(biāo):顧名思義,就是<mx:VBox>這個(gè)觸發(fā)事件的節(jié)點(diǎn)。
            上浮:<mx:VBox>-><mx:HBox>-><mx:Panel>是按照這個(gè)順來檢查每個(gè)節(jié)點(diǎn)是否注冊(cè)了監(jiān)聽。
            了解了Flex中事件的處理流程,那么我們可以解釋addEventListener三個(gè)參數(shù)的意義啦。
            useCapture:Boolean=false,表示的,這個(gè)監(jiān)聽是能在目標(biāo)階段和上浮階段進(jìn)行監(jiān)聽
            useCapture:Boolean=true,表示的是這個(gè)監(jiān)聽只能在捕捉階段進(jìn)行監(jiān)聽。

            priority:Integer=0, 優(yōu)先級(jí),監(jiān)聽是有優(yōu)先級(jí)的,那么通過這個(gè)字段,我們可以輕松的改變監(jiān)聽的優(yōu)先級(jí),是不是很方便,默認(rèn)的時(shí)候?yàn)?;

            useWeakReference:Boolean=false // 是否設(shè)定為弱引用 這個(gè)參數(shù)的意思是,在該監(jiān)聽不使用的時(shí)候,是否允許垃圾回收器,將該監(jiān)聽回收。這個(gè)很重要,因?yàn)閍ddEventListener有點(diǎn)類似千年老龜,生命周期比較長,如果沒有被回收掉,會(huì)一直占著系統(tǒng)資源的。

            最后有一點(diǎn),要非常注意,在UI的監(jiān)聽執(zhí)行完畢后,一定要將該監(jiān)聽移除removeEventListener,否則,即使UI被移除掉,監(jiān)聽也不會(huì)被銷毀。這個(gè)比較重要,因?yàn)橐恍┛雌饋肀容^詭異的錯(cuò)誤,大部分是因?yàn)檫@個(gè)導(dǎo)致的。

            現(xiàn)在來解惑先前的埋伏下的懸念:
            MyEvent (type:String, bubbles:Boolean = false, cancelable:Boolean = false)

            bubbles:Boolean = false:這個(gè)事件是否參與上浮階段

            cancelable:Boolean = false // 確定是否可以取消 Event 對(duì)象

            所以,在application中,觸發(fā)的事件,它的底層,是無法監(jiān)聽到的,收筆回家~

    posted on 2008-08-07 15:31 程序人生-天津 閱讀(2911) 評(píng)論(0)  編輯  收藏 所屬分類: Flex
    主站蜘蛛池模板: 免费在线中文日本| 国产性生大片免费观看性| 亚洲电影免费观看| 亚洲一区二区三区夜色| 国内精品一级毛片免费看| 亚洲精品无码av人在线观看| 国产高清视频免费在线观看| 狠狠色婷婷狠狠狠亚洲综合| v片免费在线观看| 日本亚洲视频在线| 69影院毛片免费观看视频在线| 精品亚洲成a人片在线观看 | 全免费a级毛片免费看不卡| 中文字幕乱码亚洲精品一区| 在线免费观看污网站| 黑人粗长大战亚洲女2021国产精品成人免费视频 | 免费一本色道久久一区| MM1313亚洲国产精品| 亚洲国产精品一区二区九九| 中国一级全黄的免费观看| 亚洲国产精品久久久久网站| 一色屋成人免费精品网站| 亚洲爆乳大丰满无码专区| 国产L精品国产亚洲区久久 | 欧洲一级毛片免费| 亚洲欧洲专线一区| 亚洲色婷婷六月亚洲婷婷6月| 99久久免费观看| 亚洲国产欧美日韩精品一区二区三区| 日本中文一区二区三区亚洲| 国产自国产自愉自愉免费24区| 亚洲成年人电影网站| 免费一级成人毛片| 91香焦国产线观看看免费 | 精品一区二区三区高清免费观看| 久久久久久久久亚洲| 四虎成人免费观看在线网址| 中文字幕在线视频免费观看| 亚洲制服丝袜在线播放| 中文字幕亚洲图片| 性感美女视频免费网站午夜|