欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Flex自定义事件、传值

程序员文章站 2022-04-19 18:43:00
[html]  定义自己的Event类:MyEvent    package com  {    &...
[html] 
定义自己的Event类:MyEvent 
 
package com 

    import flash.events.Event; 
    import flash.events.EventDispatcher; 
     
    public class MyEvent extends Event 
    { 
        public static const EVENT_TEST:String = "EventTest"; 
         
        public var data:Object; 
         
        public static const dis:EventDispatcher = new EventDispatcher(); 
         
        public function MyEvent(type:String,bubbles:Boolean = false,canceable:Boolean = false,data:Object = null) 
        { 
            super(type,bubbles,canceable); 
            this.data = data; 
        } 
         
    } 

[html]
测试页面: 
 
<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="https://www.adobe.com/2006/mxml" 
                layout="absolute" 
                xmlns:test="com.*"  > 
    <mx:Script> 
        <![CDATA[
            import mx.controls.Alert;
            import com.MyEvent;
            
            /*事件的执行过程:
             * 1.为自定义事件类的EventDispatcher添加监听
             * 2.实例化自定义事件
             * 3.为事件的data赋值(用来把值传递给监听)
             * 4.监听处理事件返回的对象  www.2cto.com
             
             * 这里面的设置的MyEvent.EVENT_TEST值的作用是
             * 提供了一个监听器监听事件类型的标志,因为可能
             * 我们会使用一个自定义事件类传递多种值,这个时
             * 候不同种类的值之间的识别就需要通过事件的类型
             * 来区别了
             */
            
            private function test():void {
                //为事件添加监听
                MyEvent.dis.addEventListener(MyEvent.EVENT_TEST,onEnd);
                setValue();
            }
            
            private function setValue():void {
                //实例化一个事件,并为data赋值
                var e:MyEvent = new MyEvent(MyEvent.EVENT_TEST,false,false,'dada');
                //把事件派发出去
                //注意这里需要使用的是自己的派发器,而不能使用此类做自带的派发方法dispatch();
                MyEvent.dis.dispatchEvent(e);
            }
            
            private function onEnd(e: MyEvent):void {
                //处理事件返回的值
                Alert.show(e.data.toString());
            }
            
        ]]> 
    </mx:Script> 
     
    <mx:Button label="Test" id="btn" click="test()"/> 
</mx:Application> 
作者:tengdazhang770960436