在As2.0时代,我习惯于利用一个自定义的全局事件管理器来管理所有的事件.这样的好处是便于后 期代码结构维护.说白了也就是偷懒...但是无论如何,我很喜欢这种方法,所以在as3里,我比较执拗的 想实现这个全局事件管理器.
如果说按照As2.0的思路,大致可以把事件分为三种,按钮事件等公共事件,组件架构的事件及自定义事件.前两者可都归于系统事件,而我需要的管理器便是用来管理自定义事件的.于是就有了EventCenter这么个消息中心的公用类
代码如下:
/*@
Author:frank
Site:www.2solo.cn
Date:2008.01.14
Info:静态消息中心
*/
package nt.utils{
import flash.events.EventDispatcher;
import flash.events.Event;
public class EventCenter extends EventDispatcher {
public static var EventHandler=new EventDispatcher();
private static var listeners:Array;
/*
*主构造方法
*/
public function EventCenter() {
}
/*
*事件注册
*/
public static function addMyEventListener(...args) {
trace(args.length)
EventHandler.addEventListener(args[0],args[1],args[2],args[3],args [4]);
}
/*
*事件派发
*/
public static function dispatchMyEvent(type:Object) {
EventHandler.dispatchEvent(new EnhancedEvent(type.evt,type.asd));
}
/*
*事件注销
*/
public static function removeMyEventListener(...args) {
EventHandler.removeEventListener(args[0],args[1],args[2]);
}
}
}
/*
*加强Event
*/
import flash.events.*;
class EnhancedEvent extends Event {
protected var argObj:Object;
/*
*类构造方法
*/
public function EnhancedEvent(type:String, argObj:Object, bubbles:Boolean = false, cancelable:Boolean = false) {
super(type, bubbles, cancelable);
//argObj为所填加的一个属 性,用于传递参数
this.argObj= argObj;
}
/*
*返回附带的一个参数对象
*/
public function get eventArg ():Object {
return this.argObj;
}
/*
* 重载Event的toString方法
*/
public override function toString ():String {
return formatToString ("Event:","type","bubbles","cancelable","eve ntArg");
}
}这里用到的EnhancedEvent类是一个Event类的增强.我在
Blueidea
上参考了几位朋友的方法后最终选择用这个方法来做 为给事件传递中带有参数的功能的加强手段。
方法说明:
public class EventCenter
public static function addMyEventListener(...args) //事件注册
public static function dispatchMyEvent(type:Object) //事件广播,该方法利用一个参数来接受事件和对象,所以需要同一参数对象名,比如这里的asd.可以通过...(rest)进行改造,下次更新了版本会继续发在我的blog上.
public static function removeMyEventListener(...args) //事件删除
class EnhancedEvent
eventArg //EnhancedEvent继承Event且拥有eventArg属性来传递一个参数对 象.
我在各大ria论坛上也看到另一种方法,类似As2中的Delegate.那个方法其实也不错,不过扩展Event的方法是As3官方推荐的方法,故选择这个方法。该事件消息中心目前只是一个雏形,欢迎大家进行补充和优化.
附上
源文件
,内含我制作的一个应用实例.
本文转自:http://www.5uflash.com/flashjiaocheng/Flash-as3-jiaocheng/2006.html
发表评论
-
Flash Media Server 起步(4)视频,流
2010-04-10 11:58 725ps.年底工作忙,没时间学习了啊。。。昨天还破天荒首次加班到半 ... -
Flash Media Server 起步(6)写个简单的聊天室
2010-04-10 11:58 704ps:发现有转载的,声明偶这不算连载教程。。只是偶自己的笔记加 ... -
Flash Media Server 起步(6)写个简单的聊天室
2010-04-10 11:58 664ps:发现有转载的,声明偶这不算连载教程。。只是偶自己的笔记加 ... -
Flash Media Server 起步(7)与server端交互
2010-04-10 11:58 631这是目前为止最难的了 ... -
Flash Media Server 起步(7)与server端交互
2010-04-10 11:57 600这是目前为止最难的了 ... -
使用as3的Timer类
2010-04-09 13:29 916很好用 import flash.utils.Timer; ... -
使用as3中EventDispatcher类
2010-04-09 13:28 839用法大同小异 package{ import flash. ... -
使用as3中EventDispatcher类
2010-04-09 13:28 694用法大同小异 package{ import flash. ... -
as3中的访问权限
2010-04-09 13:28 642其实,as2会了,上手as3很快 private关键字指定一 ... -
as3中的访问权限
2010-04-09 13:28 544其实,as2会了,上手as3很快 private关键字指定一 ... -
as3 使用sound类(翻译)-暂停和继续播放声音
2010-04-09 10:32 743[1b]问题十[/1b] 如何暂停声音,如何从暂停的地 ... -
as3事件消息中心
2010-04-09 10:31 786在As2.0时代,我习惯于利用一个自定义的全局事件管理器来管 ... -
DataArray之烦人的ID3乱码
2010-04-09 10:31 605在最近的研究过程中 ... -
DataArray之烦人的ID3乱码
2010-04-09 10:31 640在最近的研究过程中 ... -
跑动的小火柴人(flash动画)
2010-04-08 10:50 467本教程描绘的是完全用ActionScript做的一个火柴棍小人 ... -
Flash遮照制作3D动画视觉效果
2010-04-08 10:50 603基础教程,主要教给大家利用Flash中的遮照实现3D效果动画。 ... -
Flash遮照制作3D动画视觉效果
2010-04-08 10:49 680基础教程,主要教给大家利用Flash中的遮照实现3D效果动画。 ... -
指针随鼠标移动的flash卡通时钟
2010-04-08 10:49 562。先看下时钟效果: var fnum:Number = ... -
指针随鼠标移动的flash卡通时钟
2010-04-08 10:49 643。先看下时钟效果: var fnum:Number = ... -
用flash给人物侧面绘画
2010-04-08 09:02 622一.先来看看效果: 二.下面我们开始讲解制作过程: 1.使 ...
相关推荐
第 3 章 : 使用数组 第 4 章 : 处理错误 第 5 章 : 使用正则表达式 第 6 章 : 使用 XML 第 7 章 : 使用本机 JSON 功能 第 8 章 : 处理事件 第 9 章 : 使用应用程序域 第 10 章 : 显示编程 第 11 章 : 使用...
<br/> 开发 SmsControl控件经过严格设计,其特点为:1、调用简单,仅3个函数调用,2个事件消息,简化了客户端的设计。2、收发可靠,所有消息极力发送,发送失败的消息会在两天内持续发送,发送成功...
Signals最初是由在AS3中实现的。 信号受Qt中C#事件和信号/插槽的启发。 句法// with DOM EventListenerbutton . addEventListener ( "click" , onClick ) ;// Signal equivalent; past tense is recommendedbutton...
1、封装消息的发送和接收方法,支持不同数据类型、业务类型的消息 2、具体业务客户端和服务器实现类,继承以下三个事件方法就可以处理具体业务 Protected Overrides Sub OnEndReceiveEvent(ByVal handler As Socket...
(3)使用了SPI技术与读写器进行数据,创建专门处理读卡的线程,时刻准备读卡,读取到ID卡后发送消息队列使得显示屏做出对应开锁或锁定显示。(4)使用了I2C技术对AS608模块例程代码与OLED显示屏模块代码进行修改,...
NetBIOS 11.1 Microsoft NetBIOS 21.1.1 LANA 编号 21.1.2 NetBIOS 名字 41.1.3 NetBIOS 特性 61.2 NetBIOS 编程基础 71.3 常规NetBIOS 例程 81.3.1 会话服务器:异步回调模型 151.3.2 会话服务器:异步事件模型 ...
微软Visual Basic Winsock控件39715.1 属性39715.2 方法39815.3 事件39915.4 UDP示例40015.4.1 UDP消息的发送40315.4.2 UDP消息的接收40415.4.3 获取Winsock信息40415.4.4 运行UDP示例40515.4.5 UDP状态40515.5 TCP...
39715.2 方法 39815.3 事件 39915.4 UDP示例 40015.4.1 UDP消息的发送 40315.4.2 UDP消息的接收 40415.4.3 获取Winsock信息 40415.4.4 运行UDP示例 40515.4.5 UDP状态 40515.5 TCP示例 40615.5.1 TCP服务器 41215.5....
微软Visual Basic Winsock控件39715.1 属性39715.2 方法39815.3 事件39915.4 UDP示例40015.4.1 UDP消息的发送40315.4.2 UDP消息的接收40415.4.3 获取Winsock信息40415.4.4 运行UDP示例40515.4.5 UDP状态40515.5 TCP...
39715.2 方法 39815.3 事件 39915.4 UDP示例 40015.4.1 UDP消息的发送 40315.4.2 UDP消息的接收 40415.4.3 获取Winsock信息 40415.4.4 运行UDP示例 40515.4.5 UDP状态 40515.5 TCP示例 40615.5.1 TCP服务器 41215.5....
微软Visual Basic Winsock控件39715.1 属性39715.2 方法39815.3 事件39915.4 UDP示例40015.4.1 UDP消息的发送40315.4.2 UDP消息的接收40415.4.3 获取Winsock信息40415.4.4 运行UDP示例40515.4.5 UDP状态40515.5 TCP...
微软Visual Basic Winsock控件39715.1 属性39715.2 方法39815.3 事件39915.4 UDP示例40015.4.1 UDP消息的发送40315.4.2 UDP消息的接收40415.4.3 获取Winsock信息40415.4.4 运行UDP示例40515.4.5 UDP状态40515.5 TCP...