11RIA 闪客社区 - 最赞 Animate Flash 论坛

搜索
查看: 2295|回复: 3
上一主题 下一主题

[事件机制] AS3自定义事件的经典案例学习

[复制链接] TA的其它主题
发表于 2018-12-6 09:09:34 | 显示全部楼层 |阅读模式

【游客模式】——注册会员,加入11RIA 闪客社区吧!一起见证Flash的再次辉煌……

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
//自定义事件
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方法。





自定义事件学习(重要).rar

13.48 KB, 下载次数: 3, 下载积分: 银子 -10 , 活跃 1

售价: 10 银子  [记录]

评分

参与人数 1银子 +66 收起 理由
最后一批aser + 66 銀子多,任性~~

查看全部评分

发表于 2018-12-6 09:21:06 | 显示全部楼层
高手,我实在是看不懂,能加个好友吗?
回复

使用道具 举报

发表于 2018-12-13 16:01:37 | 显示全部楼层
大款狠心丢下10两拿走了。
回复

使用道具 举报

发表于 2019-1-18 20:06:16 | 显示全部楼层
刚刚仔细阅读了你的代码,真心不错,设计也很新颖!
只是为什么你就写这一个练习就不写了呢?
坚持写练习才会有进步,
之前我都看不懂你的代码,现在想想我确实进步了不少!
你能多写些练习传进来吗?
你看看这里几乎都是我的练习,
感到好孤单!!
来吧,我们一起进步!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

感谢所有支持论坛的朋友:下面展示最新的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)



快速回复 返回顶部 返回列表