• Flex 使用wigdet组件库 实现自定义事件 派发 和 监听


    在这里主要说明的是 在组件和模块之间传递事件是需要模块同时继承<viewer:BaseWigdet></viewer:BaseWigdet>才可以监听到事件。

    wigdet本身的BaseWigdet就是一个模块,它是继承Module的。所以说你们如果是要在继承BaseWigdet的模块派发事件,然后在没有继承BaseWigdet的自定义组件里是监听不到的。如果你这样做的话,想实现事件监听那就把自定义组件去继承BaseWigdet就可以了。

    自定义事件类  UploadEvent.as 

      

     1 package widgets.ProvincePgis.PlotSystem.planConfigurationManage.events
     2 {
     3     /*
     4      * @Content 上传 事件类
     5      * @Author sange 
     6      * @E-mail: sange.chen@gmail.com 
     7      * @Version 1.0.0 
     8      * @Date:Apr 12, 2012 6:52:25 PM 
     9      */
    10     import flash.events.Event;
    11     import flash.events.EventDispatcher;
    12     
    13     public class UploadEvent extends Event
    14     {
    15         private var _data:Object;
    16         
    17         public static const UPLOAD_COMPLETE:String = "uploadComplete";
    18         public static const UPLOADVIEW:String = "uploadView";
    19         public static const UPLOAD_SECURITY_ERROR:String="uploadSecurityError";
    20         public static const UPLOAD_ERROR:String = "uploadIoError";
    21         
    22         public static var dispatcher:EventDispatcher = new EventDispatcher();
    23         
    24         public function UploadEvent(obj:Object ,type:String, bubbles:Boolean=false, cancelable:Boolean=false)
    25         {        
    26             _data = obj;
    27             super(type, bubbles, cancelable);
    28         }
    29         
    30         public function get data():Object
    31         {
    32             return _data;
    33         }
    34         
    35         override public function clone():Event
    36         {
    37             return new UploadEvent(_data,type,bubbles,cancelable);
    38         }        
    39     }
    40 }

     看到定义了一个静态变量 dispatcher,是EventDispatcher类型,用dispatcher 
    可以任何地方监听到。 

    Main.mxml 

    1 var panl:IFlexDisplayObject = PopUpManager.createPopUp(this,FileUploadWidget,true);
    2                 PopUpManager.centerPopUp(panl);
    3                 UploadEvent.dispatcher.dispatchEvent(new UploadEvent(__uploadFileUrl,UploadEvent.UPLOADVIEW));

     FileUploadWidget.mxml

      1 protected function init(event:FlexEvent):void 

     2             {

     3                 UploadEvent.dispatcher.addEventListener(UploadEvent.UPLOADVIEW,uploadViewHandler);
     4                 
     5                 _arrUploadFiles = new ArrayCollection();                
     6                 enableUI();
     7                 uploadCheck();
     8             }
     9 private function uploadViewHandler(e:UploadEvent):void
    10             {
    11                 _strUploadUrl = new String(e.data);
    12             }

  • 相关阅读:
    【Azure 应用服务】App Service中运行Python 编写的 Jobs,怎么来安装Python包 (pymssql)呢?
    【Azure 存储服务】使用POST方式向Azure Storage Queue中插入Message的办法
    【Azure Developer】使用Azure Resource Graph的查询语法的示例
    img标签到底是行内元素还是块级元素
    [前端面试]前端缓存问题看这篇,让面试官爱上你
    Vue3.0 响应式数据原理:ES6 Proxy
    几行代码教你解决微信生成海报及二维码
    冷门的HTML
    HTML选择器
    程序猿必备 代码保平安
  • 原文地址:https://www.cnblogs.com/sange/p/2454885.html
Copyright © 2020-2023  润新知