ECMA Script分支——ActionScript3中的自定义事件

       如今ES6大行其道,早几年学习AS3(ActionScript3.0简称AS3,源自ECMA标准的一门脚本语言),其语法与Java语言类似。AS3配合Flash可以制作出炫彩的跨平台桌面和网页程序,随着HTML5的兴起,AS3却显得尤为的尴尬。虽已多年未用过AS3,但写了几行代码后,却依然是那么的熟悉和亲切。AS3中自定义事件的实现相比JavaScript中的实现更具有面向对象特性,攥写此文,用以缅怀AS3,同时加深对自定义事件的理解,触类旁通。

一、Flash舞台准备
       空白舞台上准备一个影片剪辑,为红色填充的矩形块,如下图:

       红色矩形块在舞台实例的名称为“mc”(变量名,AS3代码编写时用到),类型为“影片剪辑”,为此影片剪辑链接脚本类,链接方法是在上图右边找到名称为“MC”的元件名,单击鼠标右键,在弹出的快捷菜单中选择“属性”,弹出如下对话框:

       上图中在类一栏输入类名为MyClass,在基类一栏输入完整的类名,该类继承自Sprite类,点击后面的铅笔按钮,进入AS3代码编辑页面,MyClass类的代码如下图:


       在上图中,第9行代码为该影片剪辑注册了鼠标单击事件,监听器为“clickHandler”,监听器是一个函数,第11-15行对该函数进行了声明和定义,第13行和第14行使用了dispatchEvent函数,该函数可以在事件节点(事件流过的节点target)上转发事件,官方文档对该函数说明如下图:


       dispatchEvent函数接收一个Event(或Event子类)对象作为参数,为此我们可以自定义自己的事件对象,为此声明一个MyEvent类,该类继承自Event类,代码如下图:

       第6-9行为构造方法,参数1为String类型,代表事件类型type,参数2为Object对象,事件可以附加一个任意的object对象,第7行中调用父类(即Event类)的构造方法super(type),可见她与Java语言的语法是如此的一致!第8行为私有数据成员_object初始化,初始化的值为构造方法参数2 的传递的值。
       第10-12行为私有数据成员_object提供getter方法(此处暂不提供setter方法),外部可以通过“事件对象.param”就可以访问事件对象私有的数据成员_object。

二、编写Flash文档类

      鼠标点击舞台空白处,然后在文档属性的类一栏输入完整的类名,然后再点击后面的铅笔按钮进入代码编辑页面。空白文档类的完整类名为“net.smilecn.TestEventDiapatcherFrm”,其中“net.smilecn”是包层,“TestEventDiapatcherFrm”是文档类名,类代码如下图:

       第10行实例化MyClass类,实例名为myClass,设置其在舞台上的坐标x=50,y=60,第13行通过addChild方法将其添加到舞台上,myClass是程序动态生成的,第15、16行为其添加指定事件监听函数(监听器),通过字符串type来标识并区分事件类型;第18行为实例mc(舞台上已经绘制好的红色矩形块)注册事件监听函数clickMe。

三、运行Flash程序

       在Flash开发环境中,按下键盘“Ctrl+Enter"组合键,即可运行程序,程序运行结果如下图:


       综述,AS3中使用自定义事件时,要首先编写自定义事件,通过继承Event类扩展事件功能,然后通过dispatchEvent函数调度自定义事件,从而完成自定义事件的输出。AS3代码语法如同Java代码,相比JavaScript代码而言更具有面向对象的特性,为何就没有被主流选择呢?

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页