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方法。
高手,我实在是看不懂,能加个好友吗? 大款狠心丢下10两拿走了。 刚刚仔细阅读了你的代码,真心不错,设计也很新颖!
只是为什么你就写这一个练习就不写了呢?
坚持写练习才会有进步,
之前我都看不懂你的代码,现在想想我确实进步了不少!#;P
你能多写些练习传进来吗?
你看看这里几乎都是我的练习,
感到好孤单!!
来吧,我们一起进步!
页:
[1]