`
hgfghwq18
  • 浏览: 45960 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

as3事件消息中心

阅读更多

 在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
分享到:
评论

相关推荐

    ActionScript 3.0 开发人员指南 (AS3开发帮助文档)

    第 3 章 : 使用数组 第 4 章 : 处理错误 第 5 章 : 使用正则表达式 第 6 章 : 使用 XML 第 7 章 : 使用本机 JSON 功能 第 8 章 : 处理事件 第 9 章 : 使用应用程序域 第 10 章 : 显示编程 第 11 章 : 使用...

    移动短消息控件

    <br/> 开发 SmsControl控件经过严格设计,其特点为:1、调用简单,仅3个函数调用,2个事件消息,简化了客户端的设计。2、收发可靠,所有消息极力发送,发送失败的消息会在两天内持续发送,发送成功...

    SignalsJS:AS3信号的TypeScript端口

    Signals最初是由在AS3中实现的。 信号受Qt中C#事件和信号/插槽的启发。 句法// with DOM EventListenerbutton . addEventListener ( "click" , onClick ) ;// Signal equivalent; past tense is recommendedbutton...

    socket异步通信框架

    1、封装消息的发送和接收方法,支持不同数据类型、业务类型的消息 2、具体业务客户端和服务器实现类,继承以下三个事件方法就可以处理具体业务 Protected Overrides Sub OnEndReceiveEvent(ByVal handler As Socket...

    张艺俊-智能指纹锁_AS608_基于stm32F407开发板的智能指纹锁_指纹密码锁_智能锁

    (3)使用了SPI技术与读写器进行数据,创建专门处理读卡的线程,时刻准备读卡,读取到ID卡后发送消息队列使得显示屏做出对应开锁或锁定显示。(4)使用了I2C技术对AS608模块例程代码与OLED显示屏模块代码进行修改,...

    Windows网络编程技术

    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 会话服务器:异步事件模型 ...

    windows网络编程技术

    微软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...

    Windows网络编程(PDF).rar

    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....

    windows网络编程(PDF)

    微软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...

    Windows网络编程

    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....

    WINDOWS网络编程技术

    微软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...

    windows网络编程

    微软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...

Global site tag (gtag.js) - Google Analytics