教你7步實現(xiàn)flex自定義Event及參數(shù)傳遞_第1頁
教你7步實現(xiàn)flex自定義Event及參數(shù)傳遞_第2頁
教你7步實現(xiàn)flex自定義Event及參數(shù)傳遞_第3頁
教你7步實現(xiàn)flex自定義Event及參數(shù)傳遞_第4頁
教你7步實現(xiàn)flex自定義Event及參數(shù)傳遞_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

1、教你7步實現(xiàn)flex自定義Event及參數(shù)傳遞Flex應用開發(fā)過程中如需要靈活的在不同組件(如A與B,父與子)之間響應事件,傳遞參數(shù)等功能時就會使用自定義事件(Event)機制,下面通過一個事例分七步,通過自定義Event和EventDispatcher兩種機制實現(xiàn)事件交互和參數(shù)傳遞;        事例描述:有一個父親“parentApp.mxml”有兩個兒子“comBrotherA.mxml”和"comBrotherB.mxml",新年 降至,兩個兒子為表孝心分別給他們老爸存入(事件)一筆過節(jié)費(事件

2、參數(shù)),并通知老爸我存錢進去了,老爸在收到兩個兒子的錢后匯總后同時告訴(事件)兩 個兒子錢我已收到總數(shù)(事件參數(shù))是多少.    1、第一步:引入自定義注冊事件參數(shù)傳遞擴展類(來自網(wǎng)絡)   view plaincopy to clipboardprint?1. package myeventhelper  2.   3.     /自定義注冊事件參數(shù)傳遞擴展類  4.     publ

3、ic class EventArgExtend  5.       6.         public function EventArgExtend()  7.           8.        

4、60;  9.         public static function create(f:Function,.arg):Function /動態(tài)參數(shù)創(chuàng)建  10.           11.             

5、;var F:Boolean = false;  12.             var _f:Function = function(e:*,._arg)  13.               14.    

6、             _arg = arg;  15.                 if(!F)  16.            &

7、#160;      17.                     F = true;  18.                 

8、0;   _arg.unshift(e);  19.                   20.                 f.apply(null,_arg);  21.  

9、;             22.             return _f;  23.           24.         pu

10、blic static function toString():String  25.           推薦精選26.             return "Class JEventDelegate"  27.     &#

11、160;     28.       29.       2、第二步:自定義事件觸發(fā)類:view plaincopy to clipboardprint?1. package myeventhelper  2.   3.     import flash.events.EventDispatcher;  4. 

12、0;    5.     import mx.core.UIComponent;  6.     /自定義事件觸發(fā)類  7.     public class MyEventDispatcher extends EventDispatcher  8.       9.

13、        private static var _instance:MyEventDispatcher;  10.         public static const EXEC_PARENT_METHOD:String="ExecParentMethod" /執(zhí)行Parent方法  11. 

14、0;       public static function getInstance():MyEventDispatcher  12.           13.            if(_instance=null)  14.  &

15、#160;            _instance=new MyEventDispatcher();  15.              16.            return _instanc

16、e;  17.           18.         public var Source:UIComponent; /事件源對象  19.         public var Parsms:Object; /主要用于參數(shù)傳遞

17、0; 20.       21.   推薦精選    3、第三步:用戶自定義事件類    view plaincopy to clipboardprint?1. package myeventhelper  2.       3.         import mx.e

18、vents.FlexEvent;  4.         /用戶自定義事件類  5.         public class MyExtendEvent extends FlexEvent  6.           7.  &

19、#160;          public static const EXEC_BROTHER_METHOD:String="ExecBrotherMethod"/執(zhí)行兄弟方法  8.              9.        

20、;     public var param:Object;  10.             public function MyExtendEvent(o:Object,type:String, bubbles:Boolean=false, cancelable:Boolean=false)  11.   

21、;            12.                 super(type, bubbles, cancelable);  13.            &#

22、160;    this.param = o;/也可通過這樣的方式傳遞參數(shù)  14.               15.           16.       推薦精選    4、第四步:

23、完成兒子A“comBrotherA.mxml”:    view plaincopy to clipboardprint?1. <?xml version="1.0" encoding="utf-8"?>  2.     <mx:Panel xmlns:mx="3.     <mx:Script>  4.   

24、0;     <!-CDATA  5.             import myeventhelper.MyExtendEvent;  6.             import myeventhelper.MyEventDispatcher

25、;  7.             import myeventhelper.EventArgExtend;  8.             private var execParent:MyEventDispatcher; /觸發(fā)父親節(jié)點事件  9. 

26、60;           function init():void  10.               11.                 execPa

27、rent = MyEventDispatcher.getInstance();  12.               13.             public function onGetParentTotal(e:MyExtendEvent,.agrs):void 

28、; 14.               15.                 /下面兩種方法都可以用來傳遞參數(shù)  16.             &

29、#160;   /this.labTotal.text = String(agrs0.totalValue);  17.                 this.labTotal.text = e.param.toString();  18.        

30、       19.             public function onParentEvent(event:Event):void  20.               21.    

31、60;            execParent.Parsms = txtValue.text;  22.                 execParent.Source = this;  23.    

32、             execParent.dispatchEvent(new Event(MyEventDispatcher.EXEC_PARENT_METHOD);  24.               推薦精選25.       

33、       26.         ->  27.     </mx:Script>  28.         <mx:Canvas height="90" width="197"> &#

34、160;29.         <mx:TextInput width="92" y="10" x="85" id="txtValue"/>     30.         <mx:Label x="13" y=

35、"12" text="存入:"/>  31.         <mx:Label x="87" y="56" width="90" id="labTotal"/>  32.         <mx:Labe

36、l x="5" y="56" text="ParentTotal:"/>  33.         </mx:Canvas>  34.         <mx:ControlBar>  35.      

37、60;      <mx:Button label="調(diào)用父方法" id="btnExecParent" click="onParentEvent(event)"/>  36.         </mx:ControlBar>  37.     </mx:Pa

38、nel>      5、第五步:完成兒子B“comBrotherB.mxml”:    view plaincopy to clipboardprint?1. <?xml version="1.0" encoding="utf-8"?>  2.     <mx:Panel xmlns:mx="3.     <

39、mx:Script>  4.         <!-CDATA  5.             import myeventhelper.MyExtendEvent;  6.             

40、;import myeventhelper.MyEventDispatcher;  7.             import myeventhelper.EventArgExtend;  8.              9.      &

41、#160;      private var execParent:MyEventDispatcher; /觸發(fā)父親節(jié)點事件  10.             function init():void  推薦精選11.           

42、    12.                 execParent = MyEventDispatcher.getInstance();  13.               14.    

43、;         public function onGetParentTotal(e:Event,.agrs):void /響應父親類的觸發(fā)的事件  15.               16.           &

44、#160;     this.labTotal.text = String(agrs0.totalValue);  17.               18.              19.     

45、;        public function onParentEvent(event:Event):void /通過自定義事件觸發(fā)類傳遞參數(shù)  20.               21.            

46、60;    execParent.Parsms = txtValue.text;  22.                 execParent.Source = this;  23.            

47、     execParent.dispatchEvent(new Event(MyEventDispatcher.EXEC_PARENT_METHOD);  24.               25.         ->  26.    &

48、#160;</mx:Script>  27.         <mx:Canvas height="90" width="197">  28.         <mx:TextInput width="92" y="10" x="

49、85" id="txtValue"/>     29.         <mx:Label x="13" y="12" text="存入:"/>  30.         <mx:Label x="

50、;87" y="56" width="90" id="labTotal"/>  31.         <mx:Label x="5" y="56" text="ParentTotal:"/>  32.      

51、0;  </mx:Canvas>  33.         <mx:ControlBar>  34.             <mx:Button label="調(diào)用父方法" id="btnExecParent" click="o

52、nParentEvent(event)"/>  35.         </mx:ControlBar>  36.     </mx:Panel>  推薦精選    6、第六步:完成父親類"parentApp.mxml":    view plaincopy to clipboardprint?1.

53、 <?xml version="1.0" encoding="utf-8"?>  2.     <mx:Application xmlns:mx="3.     <mx:Script>  4.         <!-CDATA  5.   &#

54、160;         import myeventhelper.MyExtendEvent;  6.             import myeventhelper.MyEventDispatcher;  7.          &#

55、160;  import myeventhelper.EventArgExtend;  8.             private var parentDP:MyEventDispatcher;  9.             public var 

56、;totalValue:Number = 0;  10.             function init():void  11.               12.         &#

57、160;       parentDP = MyEventDispatcher.getInstance();  13.                 nodeEvent = new MyExtendEvent(totalValue,MyExtendEvent.EXEC_BROTHER_METHOD

58、);  14.                  15.                 if(!parentDP.hasEventListener(MyEventDispatcher.EXEC_PARENT_METHOD)  1

59、6.                     parentDP.addEventListener(MyEventDispatcher.EXEC_PARENT_METHOD,getSonValue);/注冊通過自定義事件觸發(fā)類傳遞參數(shù)  17.            &#

60、160;         18.                 /注冊事件時傳遞參數(shù)  19.                 addEventListener(MyE

61、xtendEvent.EXEC_BROTHER_METHOD,EventArgExtend.create(comA.onGetParentTotal,this);  推薦精選20.                 addEventListener(MyExtendEvent.EXEC_BROTHER_METHOD,EventArgExtend.create(comB.onGetParentTotal,this);&#

62、160; 21.               22.             function getSonValue(e:Event):void  23.             

63、;  24.                 if(parentDP.Source = comA)  25.                   26.     

64、;                txtA.text = String(parentDP.Parsms);  27.                   28.      

65、;           else  29.                   30.                  

66、;   txtB.text = String(parentDP.Parsms);  31.                   32.               33.    &

67、#160;         34.             /將結(jié)果返回兒子節(jié)點  35.             private var nodeEvent:MyExtendEvent;  36.  

68、;           function onSumToNode(e:Event):void/觸發(fā)事件將結(jié)果返回兒子節(jié)點  37.               38.             

69、0;   totalValue = Number(txtA.text) + Number(txtB.text);  39.                 txtTotal.text = String(totalValue);  40.       

70、          nodeEvent.param = totalValue;  41.                 dispatchEvent(nodeEvent);  42.            

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論