这次先把ActionScript 3.0 事件机制总结一下先吧,这里只说一下自定义类发送事件的3中方式,因为在设计模式中是比较常用的。例如MVC。

关于自定义事件,主要由于两个类:事件类(Event),事件发送类(EventDispatcher)。我们讨论的自定义发送事件,就是如何使对象能够发送事件。

方式一:继承EventDispatcher类

package
{import flash.display.Sprite;import flash.events.Event;import flash.events.EventDispatcher;/*** ...* @author 橡树小屋*/public class estends extends Sprite{function estends() {//第一种var dispatcher:extendsDispatcher = new extendsDispatcher();dispatcher.addEventListener(extendsDispatcher.ACTION, actionH);dispatcher.doSome();//第二种var dispatcher1:EventDispatcher = new EventDispatcher();dispatcher1.addEventListener("secDispatcher", actionH);dispatcher1.dispatchEvent(new Event("secDispatcher"));//或者dispatcher.addEventListener("thurdDispatcher", actionH);dispatcher.dispatchEvent(new Event("thurdDispatcher"));}private function actionH(e:Event):void {trace(e);}}}
import flash.events.Event;
import flash.events.EventDispatcher;class extendsDispatcher extends EventDispatcher {public static var ACTION:String = "action";public function doSome():void {dispatchEvent(new Event(extendsDispatcher.ACTION));}
}

只要继承EventDispatcher类,就可以直接用EventDispatcher类的方法发送事件,方便简单。

方式二:复合EventDispatcher对象

package
{/*** ...* @author 橡树小屋*/import flash.display.Sprite;import flash.events.Event;public class compont extends Sprite{public function compont() {var dis:compont1 = new compont1();dis.getEventDispatch().addEventListener(compont1.ACTION, show);dis.doSome();}private function show(e:Event):void {trace(e);}}}
import flash.events.Event;
import flash.events.EventDispatcher;class compont1 {private var _dispatcher:EventDispatcher;public static var ACTION:String = "action";public function compont1() {_dispatcher = new EventDispatcher();}public function getEventDispatch():EventDispatcher {return _dispatcher;}public function doSome():void {_dispatcher.dispatchEvent(new Event(compont1.ACTION));}
}

所谓的复合,其实就是用EventDispatcher发送事件而已,因为EventDispatcher本身就是个事件发送类,一般情况下,用EventDispatcher发送事件反而会更简单。

方式三:实现IEventDispatcher接口

package
{import flash.display.Sprite;import flash.events.Event;/*** ...* @author 橡树小屋*/public class implement extends Sprite{public function implement() {var impObj:implete = new implete();impObj.addEventListener(implete.ACTION, actionH);impObj.dispatchEvent(new Event(implete.ACTION));}private function actionH(e:Event):void {trace(e);}}}
import flash.events.Event;
import flash.events.EventDispatcher;
import flash.events.IEventDispatcher;class implete implements IEventDispatcher {public var _dispatcher:EventDispatcher;public static const ACTION:String = "action";public function implete() {_dispatcher = new EventDispatcher();}//实现5个方法public function addEventListener(type:String,listener:Function,useCapture:Boolean=false,priority:int=0,useWeakReference:Boolean=true):void {_dispatcher.addEventListener(type, listener, useCapture, priority, useWeakReference);}public function dispatchEvent(evt:Event):Boolean {return _dispatcher.dispatchEvent(evt);}public function hasEventListener(type:String):Boolean {return _dispatcher.hasEventListener(type);}public function removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void {_dispatcher.removeEventListener(type,listener,useCapture);}public function willTrigger(type:String):Boolean {return _dispatcher.willTrigger(type);}
}

当类本身要继承其他类,无法继承EventDispatcher类的时候,同时又希望这个类能够成为一个单纯的事件发送类,并且可以自己添加某些方法在里面,这时候用继承IEventDispatcher接口就比较合适了,不过过程比较麻烦写,要实现IEventDispatcher接口的5个方法。

 

 

参考资料:

《flash ActionScript 3.0 殿堂之路》

转:http://www.cnblogs.com/babyzone2004/archive/2010/10/03/1841509.html

转载于:https://www.cnblogs.com/tankaixiong/archive/2012/12/12/2814272.html

ActionScript 3.0基础之事件机制相关推荐

  1. 《ActionScript 3.0基础教程》——第2章 往舞台动态地添加对象2.1 创建库资源,并为它命名...

    本节书摘来自异步社区<ActionScript 3.0基础教程>一书中的第2章,第2.1节,作者: [美]Doug Winnie 更多章节内容可以访问云栖社区"异步社区" ...

  2. 《ActionScript 3.0基础教程》——1.4 对象参数

    本节书摘来自异步社区<ActionScript 3.0基础教程>一书中的第1章,第1.4节,作者: [美]Doug Winnie 更多章节内容可以访问云栖社区"异步社区" ...

  3. 《ActionScript 3.0基础教程》——1.3 在显示面板输出信息

    本节书摘来自异步社区<ActionScript 3.0基础教程>一书中的第1章,第1.3节,作者: [美]Doug Winnie 更多章节内容可以访问云栖社区"异步社区" ...

  4. 《ActionScript 3.0基础教程》——2.2 显示队列概述

    本节书摘来自异步社区<ActionScript 3.0基础教程>一书中的第2章,第2.2节,作者: [美]Doug Winnie 更多章节内容可以访问云栖社区"异步社区" ...

  5. Flash ActionScript 2.0基础教程

    本文译者:egoldy文章出处: 文章性质:翻译 ActionScript 2.0-简介 随着FLASHMX2004的推出,Macromedia公司推出了一种新的脚本类型称为as2,在要教程中我们将要 ...

  6. ActionScript 3.0 Step By Step系列(六):学对象事件模型,从点击按扭开始

    事件可以理解为所发生的.ActionScript 能够识别并可响应的事情.许多事件与用户交互有关 . 例如:用户单击按钮,或按键盘上的键 ― 但也有其它类型的事件.例如,如果使用 ActionScri ...

  7. ActionScript 3.0游戏设计基础(第2版)

    <ActionScript 3.0游戏设计基础(第2版)> 基本信息 作者: (加)斯白(Spuy,R.V.D.) 译者: 大漠穷秋 出版社:电子工业出版社 ISBN:9787121202 ...

  8. 积少成多 Flash(ActionScript 3.0 Flex 3.0) 系列文章索引

    [源码下载] 积少成多 Flash(ActionScript 3.0 & Flex 3.0) 系列文章索引 作者:webabcd Flash 之 ActionScript 3.0  1.积少成 ...

  9. ActionScript 3.0 Step By Step系列(四):来自面向对象开发之前的呐喊:“学会写可重用的代码”...

    增强代码的可重用能力,从创建可重用的代码开始,可重用的代码则是通过从现有代码中重构加以封装,使其成为功能单一的可复用代码块.这句话笼统点说便是"封装"或"抽象" ...

  10. 【cocos2d-x】3.0新的事件分发机制

    事件分发机制 版本:自从Cocos2d-x v3.0 alpha0之后 前言 Cocos2d-X 3.0 引入了一个新的机制来响应用户事件.这篇文档将解释新的机制是如何工作的. 基础概念: Event ...

最新文章

  1. C# ref和out关键字
  2. AI一分钟|阿里成立“罗汉堂”;vivo微信人脸识别支付下半年商用
  3. C# DllImport
  4. AXI SG DMA 简易驱动 版本构思 (一)
  5. python3在线手册_Python 3 手册
  6. java挖矿算法_Scrypt 不止是加密算法,也是莱特币的挖矿算法
  7. 细说双 11 直播背后的压测保障技术
  8. jquery一个控件绑定多个事件
  9. 转:Tomcat启动失败 提示Server Tomcat v7.0 Server at localhost failed to start.六种解决方法
  10. [js] 写一个获取页面中所有checkbox的方法
  11. C++学习之路 | PTA乙级—— 1050 螺旋矩阵 (25 分)(精简)
  12. python百题百练 二级题目_计算机二级选择题(公共基础新大纲)
  13. android xml显示调整,AndroidStudio中怎么设置xml与预览同时显示?
  14. Spark SQL External DataSource外部数据源操作流程
  15. element table多选和单选
  16. 小伙用微信小程序的Canvas手撸了一个娃娃机
  17. 关于webSQL的总结
  18. bpsk调制matlab,MATLAB仿真-BPSK调制.doc
  19. SpringBoot集成DM数据库
  20. 移动营业厅前台设备如何安装+新手引导

热门文章

  1. 创建一棵二叉树(C++)以及遍历
  2. VC6.0无法进入调试
  3. 计算机应用基础本科答案排序,计算机应用基础本科操作题
  4. ad17如何删除3d实体_3D打印的过程/流程
  5. 一个例子搞懂Nacos服务发现
  6. Okhttp之RealConnection建立链接简单分析
  7. 酷炫MQTT实现消息推送
  8. 几种主流热修复方案分析
  9. c语言spoc期末考试及答案,MOOC-SPOC测试题(部分答案)(至数组一章)-C语言-宣城校区2016年.docx...
  10. oracle的freelist,Oracle表的分类以及相关参数的详解