ActionScript 3.0基础之事件机制
这次先把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基础之事件机制相关推荐
- 《ActionScript 3.0基础教程》——第2章 往舞台动态地添加对象2.1 创建库资源,并为它命名...
本节书摘来自异步社区<ActionScript 3.0基础教程>一书中的第2章,第2.1节,作者: [美]Doug Winnie 更多章节内容可以访问云栖社区"异步社区" ...
- 《ActionScript 3.0基础教程》——1.4 对象参数
本节书摘来自异步社区<ActionScript 3.0基础教程>一书中的第1章,第1.4节,作者: [美]Doug Winnie 更多章节内容可以访问云栖社区"异步社区" ...
- 《ActionScript 3.0基础教程》——1.3 在显示面板输出信息
本节书摘来自异步社区<ActionScript 3.0基础教程>一书中的第1章,第1.3节,作者: [美]Doug Winnie 更多章节内容可以访问云栖社区"异步社区" ...
- 《ActionScript 3.0基础教程》——2.2 显示队列概述
本节书摘来自异步社区<ActionScript 3.0基础教程>一书中的第2章,第2.2节,作者: [美]Doug Winnie 更多章节内容可以访问云栖社区"异步社区" ...
- Flash ActionScript 2.0基础教程
本文译者:egoldy文章出处: 文章性质:翻译 ActionScript 2.0-简介 随着FLASHMX2004的推出,Macromedia公司推出了一种新的脚本类型称为as2,在要教程中我们将要 ...
- ActionScript 3.0 Step By Step系列(六):学对象事件模型,从点击按扭开始
事件可以理解为所发生的.ActionScript 能够识别并可响应的事情.许多事件与用户交互有关 . 例如:用户单击按钮,或按键盘上的键 ― 但也有其它类型的事件.例如,如果使用 ActionScri ...
- ActionScript 3.0游戏设计基础(第2版)
<ActionScript 3.0游戏设计基础(第2版)> 基本信息 作者: (加)斯白(Spuy,R.V.D.) 译者: 大漠穷秋 出版社:电子工业出版社 ISBN:9787121202 ...
- 积少成多 Flash(ActionScript 3.0 Flex 3.0) 系列文章索引
[源码下载] 积少成多 Flash(ActionScript 3.0 & Flex 3.0) 系列文章索引 作者:webabcd Flash 之 ActionScript 3.0 1.积少成 ...
- ActionScript 3.0 Step By Step系列(四):来自面向对象开发之前的呐喊:“学会写可重用的代码”...
增强代码的可重用能力,从创建可重用的代码开始,可重用的代码则是通过从现有代码中重构加以封装,使其成为功能单一的可复用代码块.这句话笼统点说便是"封装"或"抽象" ...
- 【cocos2d-x】3.0新的事件分发机制
事件分发机制 版本:自从Cocos2d-x v3.0 alpha0之后 前言 Cocos2d-X 3.0 引入了一个新的机制来响应用户事件.这篇文档将解释新的机制是如何工作的. 基础概念: Event ...
最新文章
- C# ref和out关键字
- AI一分钟|阿里成立“罗汉堂”;vivo微信人脸识别支付下半年商用
- C# DllImport
- AXI SG DMA 简易驱动 版本构思 (一)
- python3在线手册_Python 3 手册
- java挖矿算法_Scrypt 不止是加密算法,也是莱特币的挖矿算法
- 细说双 11 直播背后的压测保障技术
- jquery一个控件绑定多个事件
- 转:Tomcat启动失败 提示Server Tomcat v7.0 Server at localhost failed to start.六种解决方法
- [js] 写一个获取页面中所有checkbox的方法
- C++学习之路 | PTA乙级—— 1050 螺旋矩阵 (25 分)(精简)
- python百题百练 二级题目_计算机二级选择题(公共基础新大纲)
- android xml显示调整,AndroidStudio中怎么设置xml与预览同时显示?
- Spark SQL External DataSource外部数据源操作流程
- element table多选和单选
- 小伙用微信小程序的Canvas手撸了一个娃娃机
- 关于webSQL的总结
- bpsk调制matlab,MATLAB仿真-BPSK调制.doc
- SpringBoot集成DM数据库
- 移动营业厅前台设备如何安装+新手引导
热门文章
- 创建一棵二叉树(C++)以及遍历
- VC6.0无法进入调试
- 计算机应用基础本科答案排序,计算机应用基础本科操作题
- ad17如何删除3d实体_3D打印的过程/流程
- 一个例子搞懂Nacos服务发现
- Okhttp之RealConnection建立链接简单分析
- 酷炫MQTT实现消息推送
- 几种主流热修复方案分析
- c语言spoc期末考试及答案,MOOC-SPOC测试题(部分答案)(至数组一章)-C语言-宣城校区2016年.docx...
- oracle的freelist,Oracle表的分类以及相关参数的详解