通过男女关系很生动的讲解了as3自定义事件的方法,希望对还不是了解自定义事件的童鞋有所帮助。
下面这个例子有四个类文件,一个是男孩类、一个是女孩类、一个是自定义事件类、一个是文档类。我们的目标是,男孩发出不同的事件,女孩做出不同的反映。
以下类文件和主文档放在同一目录下。
1、自定义事件类:
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方法。
}
}
}
希望各位不懂自定义事件的朋友看了之后会有所启发,总之,事件发送没反应大部分原因是发送者和接受者不在一个反应区域内。基本上如果是自定义类要发送事件,那么监听者也是他自己。如果是显示对象发送自定义事件,可以让他自己监听也可以让他的父级显示容器监听,但如果是后者则必须将冒泡参数设为true,在本例中就是修改自定义事件类文件中的
super(type);
这一行为super(type,true);
分享到:
相关推荐
张志晨:as3语言,最为典型的自定义事件 模板,可以自己修改并扩充。
flash as3自定义组件开发
自定义按钮类,下载后,直接传参数调用就OK
as3自定义弹出框,图片路径要自己修改一下。
用as3写的flash自定义键盘源码,有点击效果
非FLEX组件。纯AS3代码实现。只需传入数组,数据就会以下拉菜单的形式显现
Flex4视频教程_02-03用AS自定义事件.rar
可以练习如何自定义类/包,如何引用
因为有的时候项目需要自定义的ComboBox,但是组件修改外观什么的都很不容易实现,特别是客户要很特别的外观样式或者效果的时候就没办法处理了,所以自己做了一个这样的东西,使用起来比较简单方便。显示的内容都是从...
as3 用库中的图片自定义鼠标形状,包含两种鼠标形状
js模拟as的自定义事件,能自己触发,适用于游戏等行业开发
实用as3滚动条,flash常用滚动条源码
完Actionscript 3代码编写的拖拽条以及自定义事件机制的使用。(slider, scroller, scrollBar)怎么脚都可以,明白我的意思就好 由于单位电脑上面之后Adobe CS5,我最低也只能存成CS4格式,不过.fla文件里面什么也没有...
Androidstudio 工程 自定义APN 连接实现 很稳定 希望能帮助大家 自实现功能
调用简单,纯代码实现按钮 var button01: SimpleButton = org.button.button.newButton({title: "按钮"});
自定义as3缩放工具类实例, 在别处下载的, 觉得挺好, 分享下
自定义控件源码下载view.as.zip
如何接收事件?如何做到AS3.0的标准事件编程? 类似JAVA的监听或观察者模式 Event改变的部分很多,正在想怎样用一个有条理的方式来讲解Event和它相关的诸多内容,让我们感到比较容易理解,记忆和接受。
as3.0内核中已有ColorPicker,但在某些时候希望用更加简单点的颜色选取器呢,那就请下载本人制作的ColorPicker
as3.0文本框提示功能的自定义组件,传入一个数据源信息,对于文本框的点击后查询到相应的数据