Flash 3.0 中的自定义事件(转)

用男孩女孩的实例方法详细来讲述自定义事件在Flash As 中的应用。

package {

    import flash.events.Event;

    //导入事件类

    public class CustomEvent extends Event {

       
//声明自定义事件扩展自事件类成为其子类

        public static  const SENDFLOWER:String
="sendFlower";

       
//声明静态常量作为事件类型1

        public static  const SENDCAR:String
="sendCar";

       
//声明静态常量作为事件类型2

        public
var info:String;

       
//声明变量储存事件信息,这也是我们用自定义事件的主要原因,可以用他来

       
//携带额外的信息

        public
function CustomEvent(type:String,inf) {

            super(type);

           
//调用父类构造函数并设置传入的参数作为事件类型

            info
=inf;

           
//将传入的参数2存入info

        }

    }

}

//2、男孩类:
package {

    import flash.events.EventDispatcher;

   
//导入事件发送者类

    import flash.events.Event;

   
//导入事件类

    public class Boy extends EventDispatcher {

       
//声明男孩类扩展自事件发送者类,成为其子类

        public
function sendFlower() {

           
//声明公开送花方法;

           
var info:String="玫瑰花";

           
//声明局部变量设置发送信息

           
var events=new CustomEvent(CustomEvent.SENDFLOWER,info);

           
//声明一个新的自定义事件类的实例,并设置类型为第一种、

           
//将发送信息存入事件

           
this.dispatchEvent(events);

           
//发送该事件

        }

        public
function sendCar() {

           
//声明公开送车方法;

           
var info:String="百万跑车";

           
//声明局部变量设置发送信息

           
var events=new CustomEvent(CustomEvent.SENDCAR,info);

           
//声明一个新的自定义事件类的实例,并设置类型为第二种、

           
//将发送信息存入事件

           
this.dispatchEvent(events);

           
//发送该事件

        }

    }

}

//3、女孩类:
package {
    public class Girl {
        public
function replay(info):void {
            trace(info);
        }
       
//声明公开方法,做出反应
    }
}
//4、文档类:
package {

    import flash.display.Sprite;

   
//导入Sprite类

    public class Documents extends Sprite {

       
//声明文档类扩展自sprite类

        private
var _boy:Boy;

       
//声明私有属性为男孩类型

        private
var _girl:Girl;

       
//声明私有属性为女孩类型

        public
function Documents() {

           
//构造函数

            _boy
=new Boy;

           
//创建男孩实例

            _girl
=new Girl;

           
//创建女孩实例

            _boy.addEventListener(CustomEvent.SENDFLOWER,_hand);

           
//为男孩增加类型为CustomEvent.SENDFLOWER的事件监听

            _boy.addEventListener(CustomEvent.SENDCAR,_hand);

           
//为男孩增加类型为CustomEvent.SENDCAR的事件监听

            _boy.sendCar();

           
//调用男孩的送车的方法。你可以再试着调用男孩的sendFlower

           
//方法试试,看结果有什么不同

        }

        private
function _hand(E:CustomEvent):void {

           
//声明事件处理器

            _girl.replay(
"我收到一位帅哥送我的:"+E.info);

           
//调用女孩的replay方法。

        }

    }

}

posted on 2011-09-13 20:53  袁军峰  阅读(298)  评论(0编辑  收藏  举报

导航