flex dispatchEvent 实例

flashbuilder sdk:3.6;jdk:1.7,;tomcat:7;myeclipse:10.0

Flex dispatchEvent实例下载:点击打开链接

Flex dispatchEvent实例:所谓dispatchEvent是一个什么东西呢?按照我单纯 的理解,就是我定义了一个事件,然后去监听这个事件,最后,当有人触发这个事件的时候,就调用监听程序进行处理。好了,废话不多说了,看代码吧。

首先说下思路:


页面里面有一个Button,点击button后,会有两个操作,一是弹出另外一个窗口,二是注册自定义事件(加自定义事件的监听);然后在弹出窗口定义函数,主要是发送自定义事件以及输入框的参数到后台,后台打印传过来的参数;

这里首先自定义了一个事件类,如下:

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. package fz.event  
  2. {  
  3.     import flash.events.Event;  
  4.       
  5.     /** 
  6.      * user defined event;  
  7.      * used to listen the CHANGE_FLAG attribute 
  8.      */  
  9.     public class MyEvent extends Event  
  10.     {  
  11.          static public var CHANGE_FLAG :String ="change_flag";  
  12.            
  13.          static public var CHANGE_FLAG2: String ="change_flag2";  
  14.           
  15.         public var info:String; // info from flex  
  16.           
  17.         public function MyEvent(type:String,info:String ,bubbles:Boolean=false, cancelable:Boolean=false)  
  18.         {  
  19.             super(type, bubbles, cancelable);  
  20.             this.info=info;  
  21.         }  
  22.     }  
  23. }  
这个事件类有两个static属性(change_flag2可以暂时不管)和一个一般属性;看第一个button如何加监听:

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. public  function addListen_click():void{  
  2.   
  3.     // add listener in the father panel  
  4.     var btpopmenu:BtPopMenu=BtPopMenu(PopUpManager.createPopUp(this,BtPopMenu,true));  
  5.       
  6.     //Alert.show("after new BtPopMenu");  
  7.     btpopmenu.addEventListener(MyEvent.CHANGE_FLAG,saveInfo);  
  8.           
  9.     PopUpManager.centerPopUp(btpopmenu);  
  10. }  

上面是第一个button的click属性函数,其中BtPopMenu就是自定义的一个弹出式窗口,如下:

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml" showCloseButton="true"   
  3.                 layout="absolute" width="400" height="300" close="this.close()">  
  4.     <mx:Metadata>  
  5.         [Event(name="CHANGE_FLAG",type="fz.event.MyEvent")]  
  6.     </mx:Metadata>  
  7.     <mx:Script>  
  8.         <![CDATA[  
  9.             import fz.event.MyEvent;  
  10.             import mx.managers.PopUpManager;  
  11.               
  12.             public function pop_click():void{  
  13.                 var info:String =input.text;  
  14.                 // 新建事件  
  15.                 var myEvent:MyEvent =new MyEvent(MyEvent.CHANGE_FLAG,info);  
  16.                 // 发送事件  
  17.                 dispatchEvent(myEvent);  
  18.             }  
  19.               
  20.             private function close() : void {  
  21.                 PopUpManager.removePopUp(this);  
  22.             }  
  23.         ]]>  
  24.     </mx:Script>  
  25.       
  26.     <mx:VBox height="100%">  
  27.         <mx:HBox>  
  28.             <mx:Label text="输入后台要打印的数据:" />  
  29.             <mx:TextInput id="input" />  
  30.         </mx:HBox>  
  31.         <mx:Button id="popBt" label="后台打印吧" click="pop_click()"/>  
  32.     </mx:VBox>  
  33.       
  34. </mx:TitleWindow>  

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. btpopmenu.addEventListener(MyEvent.CHANGE_FLAG,saveInfo);  

上面一句就是加监听的了,这里是把MyEvent的CHANGE_FLAG属性作为监听的对象,然后如果检测到有事件的话,就调用saveInfo方法,这个再说。

看弹出的窗口中的button的click函数:

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. public function pop_click():void{  
  2.                 var info:String =input.text;  
  3.                 // 新建事件  
  4.                 var myEvent:MyEvent =new MyEvent(MyEvent.CHANGE_FLAG,info);  
  5.                 // 发送事件  
  6.                 dispatchEvent(myEvent);  
  7.             }  
click函数创建了一个MyEvent的CHANGE_FLAG事件,然后发送这个事件,所以在第一个button中的事件监听就会收到这个事件,就会调用saveInfo方法:

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. /** 
  2.  * 注册监听事件,当有事件发送时,后台打印 
  3.  */  
  4. public function saveInfo(e:MyEvent):void{  
  5.       
  6.     var info:String =e.info;  
  7. //  Alert.show("info:"+info);  
  8.     save_info.printInfo(info);  
  9. }  
这里的save_info是RemoteObject,在remoting-config.xml中配置。

看下前台展示效果吧:





分享,成长,快乐

转载请注明blog地址:http://blog.csdn.net/fansy1990

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值