kaba47 发表于 2018-12-6 09:09:34

AS3自定义事件的经典案例学习

//自定义事件
package
{
        import flash.events.Event;
        //导入事件类
        public class CustomEvent extends Event
        {
                //声明自定义事件扩展自事件类成为其子类
                public static const SENDFLOWER:String = "sendFlower";
                //声明静态常量作为事件类型1
                public static const SENDCAR:String = "sendCar";
                //声明静态常量作为事件类型2
                private var info:String = "";
                //声明变量储存事件信息,这也是我们用自定义事件的主要原因,可以用他来
                //携带额外的信息

                public function CustomEvent(type:String):void
                {
                        super(type);
                        //调用父类构造函数并设置传入的参数作为事件类型
                }

                public function get mydata():String
                {
                        return info;
                }
                public function set mydata(ns:String):void
                {
                        info = ns;
                }
        }
}

//2、男孩类:
package
{
        import flash.events.EventDispatcher;
        //导入事件发送者类
        import flash.events.Event;
        //导入事件类
        public class Boy extends EventDispatcher
        {
                public var myname:String;

                public function Boy(name:String="帅哥"):void
                {
                        myname = name;
                }
               
                //声明男孩类扩展自事件发送者类,成为其子类
                public function sendFlower():void
                {
                        //声明公开送花方法;
                        var info:String = "玫瑰花";
                        //声明局部变量设置发送信息
                        var events = new CustomEvent(CustomEvent.SENDFLOWER);
                        events.mydata = info;
                        //声明一个新的自定义事件类的实例,并设置类型为第一种、
                        //将发送信息存入事件
                        this.dispatchEvent(events);
                        //发送该事件
                }

                public function sendCar():void
                {
                        //声明公开送车方法;
                        var info:String = "百万跑车";
                        //声明局部变量设置发送信息
                        var events = new CustomEvent(CustomEvent.SENDCAR);
                        events.mydata = 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 Main extends Sprite
        {
                //声明文档类扩展自sprite类
                private var a_boy:Boy;
                private var b_boy:Boy;
                //声明私有属性为男孩类型
                private var _girl:Girl;
                //声明私有属性为女孩类型

                public function Main()
                {
                        //构造函数
                        a_boy = new Boy("小王");
                        b_boy = new Boy("小李");
                        //创建男孩实例
                        _girl=new Girl();
                        //创建女孩实例
                        b_boy.addEventListener(CustomEvent.SENDFLOWER,_hand);
                        //为b_boy男孩增加类型为CustomEvent.SENDFLOWER的事件监听
                        a_boy.addEventListener(CustomEvent.SENDCAR,_hand);
                        //为a_boy男孩增加类型为CustomEvent.SENDCAR的事件监听
                        a_boy.sendCar();
                        //a_boy 调用男孩的送车的方法。
                        b_boy.sendFlower();
                        //b_boy 调用男孩的送花的方法。
                }

                private function _hand(evt:CustomEvent):void
                {
                        //声明事件处理器
                        _girl.replay("我收到"+ evt.target.myname +"送我的:"+ evt.mydata);
                }
        }
}//调用女孩的replay方法。





雪原xy 发表于 2018-12-6 09:21:06

高手,我实在是看不懂,能加个好友吗?

勤奋的蜗牛 发表于 2018-12-13 16:01:37

大款狠心丢下10两拿走了。

雪原xy 发表于 2019-1-18 20:06:16

刚刚仔细阅读了你的代码,真心不错,设计也很新颖!
只是为什么你就写这一个练习就不写了呢?
坚持写练习才会有进步,
之前我都看不懂你的代码,现在想想我确实进步了不少!#;P
你能多写些练习传进来吗?
你看看这里几乎都是我的练习,
感到好孤单!!
来吧,我们一起进步!
页: [1]
查看完整版本: AS3自定义事件的经典案例学习

感谢所有支持论坛的朋友:下面展示最新的5位赞助和充值的朋友……更多赞助和充值朋友的信息,请查看:永远的感谢名单

SGlW(66139)、 anghuo(841)、 whdsyes(255)、 longxia(60904)、 囫囵吞澡(58054)

下面展示总排行榜的前3名(T1-T3)和今年排行榜的前3名的朋友(C1-C3)……更多信息,请查看:总排行榜今年排行榜

T1. fhqu1462(969)、 T2. lwlpluto(14232)、 T3. 1367926921(962)  |  C1. anghuo(147)、 C2. fdisker(27945)、 C3. 囫囵吞澡(58054)