Flash ActionScript3.0教程 联系客服

发布时间 : 星期二 文章Flash ActionScript3.0教程更新完毕开始阅读efb16708747f5acfa1c7aa00b52acfc789eb9fbf

文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.

在ActionScript 3.0中,只能使用addEventListener()注册侦听器。

在ActionScript 3.0中,可以对属于事件流一部分的任何对象调用addEventListener()方法。

在ActionScript 3.0中,只有函数或方法可以是事件侦听器。

5.2 Event类

在ActionScript 3.0的事件处理系统中,事件对象主要有两个作用:一是将事件信息储存在一组属性中,来代表具体事件;二是包含一组方法,用于操作事件对象和影响事件处理系统的行为。

在ActionScript 3.0中,在Flash播放器的应用程序接口中,有一个Event类,作为所有事件对象的基类,也就是说,程序中所发生的事件都必须是Event类或者其子类的实例。 5.2.1 了解Event类属性

Event类公开的属性有:type、cancelable、target、currentTarget、eventphase、bubles。 1.type属性:每个事件对象都有关联的事件类型。事件类型存储以字符串的形式存储在Event.type属性中。利用事件类型,可以区分不同类型的事件。

2.cancelable属性:事件的默认行为是否可以被阻止由布尔值表示,并存储在Event.cancelable属性中。此属性时一个布尔值,默认为flase。这个属性一般是和preventDefault()方法结合在一起使用的。

3.target属性:target属性用于存储对事件目标的引用。

4.其它属性:currentTarget、eventphase和bubbles这三个属性都是和ActionScript3的事件流机制有关,在平时用到的不多。 5.2.2 了解Event类的方法

Event类的方法有7种:clone()、toString()、stopPropogation()、stopImmediatePropogation()、preventDefault()、isDefaultPrevented()和formatToString()。这些方法的用途如下:

Event.clone()方法用于赋值Event子类实例,返回Event对象原始实例的副本。当需要自定义Event子类时,就必须要继承Event.clone()方法,用于赋值自定义类的属性。另外还要加上新的属性,否则在侦听器重写调用时,这些属性的值会出现错误。

Event.toString()属性返回一个包含Event对象的所有属性的字符串。如果要自定义事件类,那么重写toString()方法时,可以使用formatToString()这个方法在返回的字符串中

25

文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.

加入新的事件实例属性。

Event.stopPropogation()方法可阻止事件对象移动到下一个节点,但只有在允许执行当前节点上的任何其它事件侦听器之后才起作用。

Event.stopImmediatePropogation()方法也阻止事件对象移动到下一个节点,但不允许执行当前节点上的任何其它事件侦听器。

Event.preventDefault()和Event.isDefaultPrevented()和Event.cancelable属性结合使用,用于取消事件的默认行为的发生。 5.2.3 Event类的子类

对于很多事件来说,使用Event类的一组属性就已经足够了。但是,Event类中的属性无法捕获其它事件具有的独特的特性,比如鼠标的点击事件,键盘的输入事件等。ActionScript 3.0的应用程序接口特意为这些具有显特征的事件准备了Event类的几个子类。这些子类主要包括:

鼠标类:MouseEvent。 键盘类:KeyBoardEvent。 时间类:TimerEvent。 文本类:TextEvent。

5.3 事件侦听器

事件侦听器也就是以前版本中的事件处理函数,是事件的处理者,负责接受事件携带的信息,并在接受到该事件之后执行事件处理函数体内的代码。

添加事件侦听的过程有两步:第一步是创建一个事件侦听函数,第二步是使用addEventListener()方法在事件目标或者任何的显示对象上注册侦听器函数。 5.3.1 创建事件侦听器

事件侦听器必须是函数类型,可以是一个自定义的函数,也可以是实例的一个方法。创建侦听器的语法格式如下:

function 侦听器名称(evt:事件类型):void{…} 语法格式说明如下:

侦听器名称:要定义的事件侦听器的名称,命名需符合变量命名规则。 evt:事件侦听器参数,必需。

事件类型:Event类实例或其子类的实例。

26

文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.

void:返回值必须为空,不可省略。 5.3.2 管理事件侦听器

在ActionScript3.0中使用IEventDispatcher接口的方法来管理侦听器函数,主要用于注册、检查和删除事件侦听器。

1.注册事件侦听器:addEventListener()函数用来注册事件侦听函数。注册侦听器的语法格式如下:

事件发送者.addEventListener(事件类型,侦听器);

2.删除事件侦听器:removeEventListener()函数用来删除事件侦听器函数。删除侦听器的语法格式如下:

事件发送者.removeEventListener(事件类型,侦听器);

3.检查事件侦听器:HasEventListener()方法和willTragger()方法,都可以用来检测当前的事件发送者注册了何种事件类型的侦听器。 检查事件侦听器语法格式如下:

事件发送者.hasEventListener(事件类型);

5.4 事件处理类型

ActionScript3.0使用单一事件模式来管理事件,所有的事件都位于flash.events包内,其中构建了20多个Event类的子类,用来管理相关的事件类型。在本节介绍常用的鼠标事(MouseEvent)件类型、键盘事件(KeyboardEvent)类型和事件事件(TimerEvent)类型和帧循环(ENTER_FRAME)事件。 5.4.1 鼠标事件

在ActionScript3.0之前的语言版本中,常常使用on(press)或者onClipEvent(mousedown)等方法来处理鼠标事件。而在ActionScript3.0中,统一使用MouseEvent类来管理鼠标事件。在使用过程中,无论是按钮还是影片事件,统一使用addEventListener注册鼠标事件。此外,若在类中定义鼠标事件,则需要先引入(import) MouseEvent类定义了10中常见的鼠标事件,具体如下:

CLICK:定义鼠标单击事件 DOUBLE_CLICK:定义鼠标双击双击事件 MOUSE_DOWN:定义鼠标按下事件 MOUSE_MOVE:定义鼠标移动事件 MOUSE_OUT:定义鼠标移出事件 MOUSE_OVER:定义鼠标移过事件 MOUSE_UP:定义鼠标提起事件 MOUSE_WHEEL:定鼠标滚轴滚动触发事件 ROLL_OUT:定义鼠标滑入事件 ROLL_OVER:定义鼠标滑出事件

27

文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.

5.4.2 键盘事件

键盘操作也是Flash用户交互操作的重要事件。在ActionScript 3.0中使用KeyboardEvent类来处理键盘操作事件。它有两种类型的键盘事件:KeyboardEvent.KEY_DOWN 和 KeyboardEvent.KEY_UP。

KeyboardEvent.KEY_DOWN:定义按下键盘时事件 KeyboardEvent.KEY_UP:定义松开键盘时事件

注意:在使用键盘事件时,要先获得它的焦点,如果不想指定焦点,可以直接把stage作为侦听的目标。 5.4.3 时间事件

在ActionScript3.0中使用Timer类来取代ActionScript之前版本中的setinterval()函数。而执行对Timer类调用的事件进行管理的是TimerEvent事件类。要注意的是,Timer类建立的事件间隔要收到SWF文件的帧频和Flash Player的工作环境(比如计算机的内存的大小)的影响,会造成计算的不准确。 Timer类有两个事件,分别为:

TimerEvent.TIMER:计时事件,按照设定的事件发出。

TimerEvent.TIMER_COMPLETE:计时结束事件,当计时结束时发出 5.4.4 帧循环ENTER_FRAME事件

帧循环ENTER_FRAME事件是ActionScript 3.0中动画编程的核心事件。该事件能够控制代码跟随Flash的帧频播放,在每次刷新屏幕时改变显示对象。

使用该事件时,需要把该事件代码写入事件侦听函数中,然后在每次刷新屏幕时,都会调用Event. ENTER_FRAME事件,从而实现动画效果。

第6章 面向对象编程基础

面向对象的编程,其英文是“Object-Oriented Programming”,简写为OOP。它以对象为基本单元来进行代码划分,组织程序代码。ActionScript3.0是一个完全标准的面向对象编程语言。面向对象编程在Flash5已经开始支持,可惜语法不是业界传统的编程语言格式,在Flash5和Flash MX中编写面向对象的编程非常的不方便。ActionScript2.0在面向对象的编程上有很大的进步,但是由于其使用的并不完全符合标准,存在很多的问题。现在ActionScript3.0的推出基本解决了ActionScript2.0中存在的问题,并有了很多的改进,而且相对于其它的OOP语言,其更简单易学。

28