<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
    主站蜘蛛池模板: 亚洲色图黄色小说| 久久久久亚洲精品成人网小说| 亚洲第一网站免费视频| 日韩免费视频一区二区| 亚洲国产精品一区二区成人片国内| 一级毛片在线播放免费| 久久精品国产亚洲一区二区三区| 一级毛片免费一级直接观看| 亚洲日本一区二区一本一道| www免费插插视频| 亚洲中文字幕无码日韩| a毛看片免费观看视频| 亚洲春色在线视频| 最近中文字幕国语免费完整 | 免费三级毛片电影片| 久久精品国产亚洲AV忘忧草18| 四虎成人精品一区二区免费网站| 国产精品日本亚洲777| 亚洲精品人成无码中文毛片 | 天堂亚洲免费视频| 亚洲精品不卡视频| 成人啪精品视频免费网站| 激情无码亚洲一区二区三区 | 婷婷精品国产亚洲AV麻豆不片| 狼群影院在线观看免费观看直播| 亚洲剧场午夜在线观看| 日韩精品视频免费在线观看| 国产免费AV片在线观看播放| 亚洲网址在线观看你懂的| 毛片a级毛片免费播放下载| 羞羞漫画小舞被黄漫免费| 天天摸夜夜摸成人免费视频| 污网站在线观看免费| 久久亚洲成a人片| 日韩免费观看视频| 中文字幕永久免费| 亚洲熟女乱色一区二区三区 | 亚洲国产无线乱码在线观看| 亚洲三区在线观看无套内射| 一个人看的免费高清视频日本| 亚洲成a人片77777老司机|