flash ActionScript快速入门(全部章节)

第1章  AcionScript 3.0概述

(1)特色

ActionScript 3.0包括二部分:核心语言和Flash Player API。核心语言用于定义编程语言的基本结构, 比如声明变量,创建表达式控制程序结构和数据类型等。Flash Player API是由一系列用于实现特定功能的flash player类组成。

第2章  AS3.0编程语言基础

(1) 语法、数据、变量、运算符和语句构成了编程语言的基础

(2)作用域

变量即使在for作用域中也不可重复

(3)默认值

Boolean型变量的默认值是:false。

int型变量的默认值是:0。

Number型变量的默认值是:NaN。

Object型变量的默认值是:null。

String型变量的默认值是:null。

uint型变量的默认值是:0。

*型变量的默认值是:undefined。

(4)两种数据类型(注意:没有包装类概念)

基元型数据类型:Boolean、int、Number、String和uint。

复杂型数据类型:Array、Date、Error、Function、RegExp、XML和XMLList。

(5)数据类型检查

它默认的是执行时进行数据类型检查。同时它也在适合使用“严格模式”的编译器在编译时执行数据类型检查。在使用严格模式的编译器中,数据类型检查既可以在执行前执行编译器检查,也可以在运行时执行运行时检查。在标准模式下,只支持默认的执行时数据类型检查。

比如说在程序编写过程中,要明确传递变量值的类型和接受参数类型相同。(严谨模式:但允许隐式转换)

(6)*

使用*作为类型注释与不使用类型注释等效。从无类型属性中读取的表达式可视为无类型表达式。该说明符主要用于两个方面:将数据类型检查延缓到运行时和将undefined存储在属性中

(7)

使用表达式来表达想要达到的效果,使用运算符来进行相关的运算,这就是数据运算的关键。

 

第3章  AS3.0程序设计

(1)for in  /for each in

for..in和for each..in语句都可以用于循环访问对象属性或数组元素。下面分别使用两种语句来访问对象中的属性。代码如下所示。

//定义一个对象lzxt,并添加属性name和age

var lzxt:Object = {name:"浪子啸天", age:30};

//执行遍历操作

for (var i:String in lzxt) {

//输出属性名称和属性值

trace("for in 语句输出:"+i + ": " + lzxt[i]);

}

//执行for each遍历操作

for each (var k:String in lzxt) {

//输出属性值

trace("for each 语句输出:"+k);

 

 

第4章  函数

(1)定义

函数在程序设计的过程中,是一个革命性的创新。利用函数编程,可以避免冗长、杂乱的代码;利用函数编程,可以重复利用代码,提高程序效率;利用函数编程,可以便利的修改程序,提高编程效率。

函数(Function)的准确的定义为:执行特定任务,并可以在程序中重用的代码块。

(2)另种

“方法”和“函数闭包”。具体是将函数称为方法还是函数闭包,取决于定义函数的上下文。

作为闭包属于函数类型,必须新定义后使用

(3)

在ActionScript 3.0 中,所有的参数均按引用传递,因为所有的值都存储为对象 。基元型数据是不变的对象,按按值还是按引用的效果一样,通常可以看作是按值传递。按值传递,就是指参数被传递给函数后,被传递的变量就独立了。若在函数中改变这个变量,原变量不会发生任何的变化。

(4)默认参数

function(参数1:参数类型=默认值,参数2:参数类型=默认值)

(5)arguments 对象和...(rest) 参数

arguments 对象是一个数组,其中按顺序保存着传递给函数的所有参数。可以使用数组的访问方式来访问传入的参数。它有一个length属性记录当前传入的参数数目;还有一个属性callee提供对函数本身的引用,该引用可用于递归调用函数表达式。

...(rest)参数是ActionScript3.0引入的新参数声明。使用该参数可指定一个自己命名的数组参数来接受任意多个以逗号分隔的参数。

 

第5章  事件的发送和处理

(1)改进

对比ActionScript 2.0,ActionScript 3.0的事件处理体系具有以下几个新特点:

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

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

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

(2)Event类---事件对象

事件对象作用

一是将事件信息储存在一组属性中,来代表具体事件;(事件属性:静态方法)

二是包含一组方法,用于操作事件对象和影响事件处理系统的行为。(事件方法)

在Flash播放器的应用程序接口中,有一个Event类,作为所有事件对象的基类,也就是说,程序中所发生的事件都必须是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的 事件流机制有关,在平时用到的不多。

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

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

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

    formatToString()这个方法在返回的字符串中加入新的事件实例属性。

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

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

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

(3)Event类的子类

Event类中的属性无法捕获其它事件具有的独特的特性

ActionScript 3.0的应用程序接口特意为这些具有显特征的事件准备了Event类的几个子类。这些子类主要包括:

鼠标类:MouseEvent。

键盘类:KeyBoardEvent。

时间类:TimerEvent。

文本类:TextEvent。

(4)事件监听函数

是事件的处理者,负责接受事件携带的信息,并在接受到该事件之后执行事件处理函数体内的代码。

添加事件侦听的过程有两步:

第一步是创建一个事件侦听函数 ,

    function 侦听器名称(evt:事件类型):void{…}

        语法格式说明如下:

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

        evt:事件侦听器参数,必需。

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

        void:返回值必须为空,不可省略。

第二步是使用addEventListener()方法在事件目标或者任何的显示对象上注册侦听器函数。

    管理事件监听器

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

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

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

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

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

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

            型的侦听器。

            检查事件侦听器语法格式如下:

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

(5)事件处理类型

ActionScript3.0使用 单一事件模式来管理事件,所有的事件都位于flash.events包内,其中构建了20多个Event类的 子类,用来管理相关的事件类型。

ActionScript3.0中,统一使用MouseEvent类来管理鼠标事件。在使用过程中,无论是按钮还是影片事件,统一使用addEventListener注册鼠标事件(关联事件--发送者--处理者)。此外,若在类中定义鼠标事件,则需要先引入(imp ort)flash.events.MouseEvent类。

MouseEvent类定义了10中常见的鼠标事件,具体如下:

CLICK:定义鼠标单击事件  DOUBLE_CLICK:定义鼠标双击双击事件

MOUSE_DOWN:定义鼠标按下事件  MOUSE_MOVE:定义鼠标移动事件

MOUSE_OUT:定义鼠标移出事件  MOUSE_OVER:定义鼠标移过事件

MOUSE_UP:定义鼠标提起事件  MOUSE_WHEEL:定鼠标滚轴滚动触发事件 

ROLL_OUT:定义鼠标滑入事件   ROLL_OVER:定义鼠标滑出事件

 

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

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

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

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

 

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

Timer类有两个事件,分别为:

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

TimerEvent. TIMER_COMPLETE:计时结束事件,当计时结束时发出

 

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

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

 

第6章  面向对象编程基础

(1)包

在ActionScript 3.0中,包路径是一个独立的模块,单独用一个包块来包含类,不再作为类定义的一部分。定义包块使用package关键字,其用法格式如下所示。

package 包块路径{

//类体

}

在ActionScript 3.0中,要使用某一个类文件,就需要先导入这个类文件所在的包,也就是要先指明要使用的类所在的位置。

通过情况下,包的导入有这样的三种情形:

1.明确知道要导入哪个包,直接导入单个的包

例如说要创建一个绘制对象,那么只需导入Display包中的Shape包即可。代码如下所示。

imp ort flash.display.Shape;

2.不知道具体要导入的类,使用通配符导入整个包

例如需要一个文本的控制类,但是并不知道该类的具体名称,那么就可以使用“*”通配符进行匹配,一次导入包内的所有类。具体使用代码如下所示。

imp ort flash.text.*

3.要使用同一包内的类文件,则无需导入

如果现在有多个类位于计算机中的同一个目录下,则这些类在互相使用的时候,不需要导入,直接使用即可。

(2)构造函数

构造函数是一个特殊的函数,其创建的目的是为了在创建对象的同时初始化对象,即为对象中的变量赋初始值。

类属性 方法确定 是以面向对象为依据的

(3)三种实用类方法

在ActionScript 3.0中,创建好的类一般有3种使用方法:作为文档类进行文档类绑定;作为库中元件的类进行绑定;作为外部类使用imp ort关键字导入。下面结合实例具体的来说一下这3种用法。

1.文档类

文档类是ActionScript 3.0的新特色,该特色是为实现代码与文档分离而设计的。 (保存后在属性面板中)

2.与库文件绑定

与fla文件库中的影片剪辑进行绑定,每个影片剪辑只能绑定一个类。(对应系统一个类)

3.imp ort导入类

(4)包外类

在ActionScript 3.0中,一个类文件中可以定义多个类,但是包块内只能定义有一个类,此为主类。主类的名称一定要和类文件的名称相同,这个类是供外部使用的。在包块之外,还可以定义多个类,这些类的名称和类文件的名称不同,而且只能由当前类中的成员可以访问

(5)接口

接口方法的实现无任何属性,但在接口类的定义中,实现的方法必须为public。

可通过 extends语句由接口继承实现多个接口,也可以通过 implements语句由类继承实现

接口是一个定义类方法组的数据类型,可作为类型注释。(通过父类吧不同的类串接在一起)

 

定义接口的方法和定义类相似,不过需要使用interface关键字来实现。

接口可以包含实例方法、静态方法、getter和setter方法。

接口也需要 保存为as文件,文件名必须和接口名保持一致,完全相同。

(6)继承与重写

通过继承父类,可以继承父类的属性和方法。但有些时候指需要使用父类中方法名称,而需改变其内容时,就需要利用重写来修改其方法内容。(子类单独产生同名需求)

在ActionScript 3.0中,只能重写实例的方法,不能重写实例属性。还有父类中方法的访问控制符为final的方法也不能进行重写。

 

6.5  AS3.0命名空间

(1)引入原因

使用命名空间,可以控制标识符的可见性→可以管理各个属性和方法的可见性。不管命名空间是在的内部还是外部,都可以应用于代码。

ActionScript 3.0中有4个访问控制符,分别为:public、private、internal和protected。这4个访问控制符就是一种命名空间,同样,也可以定义自己的命名空间。

命名空间确定了属性与方法的可见性 (作用域)

(2)定义、使用(类比引用操作符)

一是将命名空间定义到一个类的as文件中,该命名空间能够使不同的包进行访问;

    package{

//定义命名空间

    public **namespace **lzxt = "http://www.flacs.cn/" //嵌套使用

}
二是将命名空间定义在 类体 中,该命名空间仅在本类中进行访问。

package {

class SampleSpace {

//定义命名空间

namespace lzxt

lzxt var name:String=“浪子啸天”

//使用自定义命名空间控制方法

lzxt function welcome():void {

trace("欢迎使用自定义命名空间");

}

}

}若在类体中定义命名空间,则可以像访问控制符一样的使用,在定义的属性或者方法之前加上命名空间就ok了

 

第7章  AS3.0显示编程

(1)显示对象

是可以在舞台显示的一切对象,包括可以直接看得见的图形、动画、视频、文字等,也包括一些看不见的显示对象容器。在ActionScript 3.0中,任何的复杂的图形都是由显示对象和显示对象的容器共同构成。

(2)显示类表

利用ActionScript 3.0构建的Flash播放文件都有都有一个由显示对象构成的 层次结构,这个结构称为“显示列表”。这个显示列表按照一定的等级和层次在舞台上显示出来,构成复杂的显示对象。

ActionScript 3.0 支持的显示对象的结构类似于“树状结构”,以舞台为根,SWF文件为干,显示对象为枝叶

显示列表就是一个显示对象的清单(显示对象 显示容器),只要在Flash Player中显示出来的对象,都是该显示列表中的内容。

在ActionScript 3.0中,显示对象能否显示出来,取决于是否加入了显示列表。如果加入了显示列表,该对象就会被显示出来;否则,即使该对象已经被创建,也不能被显示出来。(但是enterFrame事件可以被响应)

(3)公共基类DisplayObject

属性(索引器或者是公共属性:用起来等价)

DisplayObject类共有25个属性,6个方法和6个事件:该类总结了大部分显示对象的共有的特征和行为。

类{类属性 方法 事件}

 

    显示对象的属性共有25个,本节将介绍常用的一些基本属性。

横坐标x:显示对象 注册点距离 自己父级容器注册点之间的水平距离,以象素为单位。如果父容器是舞台,那么就是自身注册点与舞台原点间的水平距离。

纵坐标y:显示对象注册点与父级容器注册点之间的竖直距离,以象素为单位。若父容器为根对象root,则为自身注册点与舞台原点之间的竖直距离。

宽度width:显示对象最左边到最右边之间的距离,以象素为单位。

高度height:显示对象最上边到最下边之间的距离,以象素为单位。

横向缩放比例scaleX:一个比例值,0~1之间的数字。控制显示对象的横向缩放比例。

纵向缩放比例scaleY:一个比例值,0~1之间的数字。控制显示对象的纵向缩放比例。

鼠标横向横坐标mouseX:鼠标相对于当前显示对象注册点之间的水平距离。

鼠标横向纵坐标mouseY:鼠标相对于当前显示对象注册点之间的竖直距离。

顺时针旋转角度rotation:显示对象绕轴点顺时针旋转的角度。0~180度表示顺时针旋转角度,0~-180度表示逆时针旋转角度。如果超过了这个范围,则自动减去360的整数倍。

透明度alpha:0~1之间的值,0表示完全透明,1表示完全不透明。

可见性visible:Boolean值,用于控制显示对象是否可见。true表示将对象显示,false表示不显示对象。但不管设置成何值,该显示对象始终位于显示对象列表中。

遮照mask:持有的引用是用来遮照的显示对象。

显示对象名字name:通常生产显示对象时,会分配默认的名字。若有需要,可以使用代码进行修改。(使用场合:trace)

父容器parent:在显示列表中每个显示对象都有其父容器。parent属性指向显示对象的父容器,若显示对象不在父容器,则该属性为null。

根对象root:返回SWF文件主类的实例。若显示对象不在父容器,则该属性为null。(文档类或者是MainTimeline)

舞台stage:该属性持有的引用指向该显示对象所在的舞台。每个Flash程序,都有一个舞台。

除了以上的16个属性之外,DisplayObject对象还有9个属性,分别为:loaderInfo、cacheASBitmap、filters、scale9Grid、blendMode、accessibilityProperties、opaqueBackground、scrollRect和transform。这些属性在后面的章节中根据需要进行讲解。

 

规律 flash IDE 为圆圈(中心点) flashAS为十字(注册点)

 

基本方法

显示对象的基本方法有6个,常用的方法如下:

getBounds()方法:返回一个矩形区域,该矩形定义相对于显示对象所在坐标系的显示对象区域。

getRect()方法:返回一个矩形区域,该矩形定义相对于显示对象所在坐标系的显示对象区域,注意该区域不包含形状上的笔触宽度。

hitTestObject()方法:返回一个Boolean值,若为true, 表示两个对象重叠或相交,否则为不相交。

hitTestPoint()方法:返回一个Boolean值,若为true, 表示该对象对应点重叠或相交,否则为不相交。

 

基本事件(系统事件)

显示对象的事件有6个,常见的如下:

added事件:将 显示对象添加到显示列表中时会调度该事件。下面的两种方法会触发此事件:将显示对象添加到容器、将显示对象添加到容器的某一层次。

addedToStage事件:将显示对象直接添加到舞台显示列表或将包含显示对象的子对象添加至舞台显示列表中时会调度该事件。 下面的两种情况下会触发此事件:将显示对象添加到容器、将显示对象添加到容器的某一层次。

removed事件:要从显示列表中删除显示对象时会调度该事件。以下两种情况下会生成此事件:将显示对象容器的某个显示对象删除、将显示对象容器中的某个层次的显示对象删除。

removedFromStage事件:要从显示列表中删除显示对象或者删除包含显示对象的子对象时会调度该事件。以下两种情况下会生成此事件:将显示对象容器的某个显示对象删除、将显示对象容器中的某个层次的显示对象删除。

enterFrame事件:播放头进入新帧时调度该事件。 若播放头不移动,或者只有一帧,则会继续以帧频调度此事件

ender事件:在显示器刷屏之前调度该事件。当使用render事件的显示对象进入舞台时,或者显示对象存在于显示列表时才会触发该事件。要保证render事件在当前帧触发,必 须调用stage.invalidate()。( 且在enterFrame事件之后

(4)显示对象的管理

显示对象容器就是用来储存和显示显示对象的对象。要实现在显示对象容器中显示对象,就需要把显示对象加入到显示对象列表中。

容器

所有的显示对象都要放入显示 对象容器中才能够显示,为了方便区分,把显示对象容器简称为容器。容器是可以嵌套的,容器中 可以放置非容器显示对象,也可以放置子容器对象

功能

    提供 访问、添加、删除显示对象的功能。

    具有 深度管理功能。

        其中深度管理也就是管理容器中子对象的叠放次序。所谓的 叠放次序,表示显示对象重叠时从前到后的显示顺序。处        

                于显示顺序最前面的完整显示,后面的对象依次被前面的对象遮挡,甚至有的不能显示出来。(越后越好)

 

(5)添加显示对象

在ActionScript 3.0中,要把一个对象显示在屏幕中,需要作两步工作

,一是创建显示对象,

    只要是继承自DisplayObject类或者其子类的的实例都可以添加到显示对象列表中,比如Sprite,MovieClip,TextField,或自定义类。

二是把显示对象添加到容器显示列表中。加入显示列表的方法有addChild()和addChildAt()。

    层次加入,这到root或者stage

(6)删除显示对象

1.移除 指定名称的显示对象(name属性)

要移除已经知道显示对象名称的显示对象,可以使用显示对象类的removeChild()方法其用法格式如下:

容器对象.removeChild(显示对象)

2.删除指定索引的显示对象要删除指定位置索引的显示对象,可以使用显示对象类的removeChildAt()方法。其用法格式如下所示。

容器对象.removeChildAt(位置索引)

(7)深度管理

深度:位置索引 用于说明同一个容器中同一级别的所有显示对象从前到后的叠放次序。

特点

深度由各自的容器对象所管理。每一个容器都知道自己有多少个子对象,这个数目记录在自己容器的numChildren属性中。每一个对象在容器显示列表中的位置索引代表了其深度值。每一个容器的深度范围为0~numChildren-1。

添加显示对象会自己调整各个显示对象的深度,避免层次冲突。比如某一个深度已经有了一个显示

(8)访问显示对象

1.通过深度访问显示对象:通过深度来访问显示对象,要使用getChildAt()方法。用法格式如下:

容器对象.getChildAt(深度)

2.通过名字访问显示对象:每一个显示对象都有一个名称,该名称可以使用该显示对象的name属性进行访问和设置。在创建显示对象的时候,可以指定显示对象的名字,也可以不指定显示对象的名字。若没有指定,Flash Player会自动的分配给该显示对象一个默认的名字,如:“instance1”“instance2”等。

3.通过坐标访问显示对象:在ActionScript 3.0中,可以通过坐标来访问置于该坐标之上的所有显示对象。getObjectsUnderPoint()方法的用法格式如下:

容器对象. getObjectsUnderPoint(点对象);

(9)处理显示对象

。这些都要通过DisplayObject类及其子类的属性和方法来实现。

位置:xy属性

缩放:scalex scaley属性

旋转:rotation属性

淡化:alpha属性

拖拽:仅仅sprite及其子类才有

显示对象.startDrag(锁定位置,拖动范围);

    格式说明如下:

    显示对象:Sprite对象及其子类生成的对象

    锁定位置:Boolean值,true表示锁定对象到鼠标位置中心,false表示锁定到鼠标第一次单击该显示对象所在的点上。可选参数,不选默    

        认为flase。

    拖动范围:Rectangle 矩形对象,相对于显示对象父坐标系的一个矩形范围。可选参数,默认值为不设定拖动范围。

遮罩:mask

    在ActionScript 3.0中,遮罩效果要使用显示对象的mask属性来实现。用法格式如下:

   ** 显示对象1.mask=显示对象2;**

    若不想继续使用遮罩,那么将显示对象的mask属性设置为null即可。用法格式如下:

    显示对象1.mask=null;

碰撞检测

    显示对象1.hitTestObject(显示对象2);

    说明:该方法用于检测两个显示对象是否发生碰撞,返回一个Boolean值,若为true,表示两个对象发生了碰撞,否则为没有碰撞。

    显示对象.hitTestPoint(x,y,检测方法);

 

第8章  使用与控制影片剪辑

(1)MovieClip类

通过MovieClip类的属性和方法,可以控制影片剪辑的播放与停止,正放和倒放,也可以动态的控制影片剪辑的播放顺序。

影片剪辑其使用主要用于需要时间轴支持的显示对象,对于不需要事件轴的显示对象,尽可能的使用Shape类或者Sprite类以提高显示性能。

只要是在Flash中创建的影片剪辑元件,Flash就会自动的将该元件添加到文档的库中。MovieClip会默认其为该类的一个实例,也就具有了该类的属性和方法。(是MC一个实例:具有属性方法 也可以连接类)

将库中的影片剪辑的实例放在舞台上时,如果该影片剪辑有多帧,那么它会按照其时间轴进行循环播放,除非通过使用ActionScript代码进行控制。

(2)处理MovieClip对象

在Flash中使用编译器把fla文件发布为SWF文件时,舞台上的所有影片剪辑实例都会转为MovieClip(影片剪辑)对象

利用“属性”面板中的“实例名称”文本输入框指定影片剪辑的实例名称,进而通过访问该名称实现对其访问和控制

影片剪辑中还嵌套有其它的影片剪辑,则通过使用点语法加影片剪辑来访问和控制

(3)影片剪辑的控制

加载swf

若要加载并控制外部的SWF影片,需要执行下面的操作:

先创建一个 URLRequest对象,用于储存要载入文件的URL。

创建一个 Loader对象

用Loader对象的load()方法,并把 URLRequest对象作为参数传递给Loader对象

建立一个 空的显示对象容器,使用addChild()方法将其添加到舞台,用于加载外部载入的影片。

建立事件侦听函数,侦听加载事件是否完成。

加载完成之后, 使用addChild()方法将Loader对象添加入空白显示对象容器。

使用显示对象的属性控制该显示对象容器的位置和大小。

使用 MovieClip类的播放控制方法控制外部影片的播放。

 

第9章  AS3.0动画编程

(1)原理

ActionScript 3.0的动画编程主要关注两方面的情形:

一是通过改变显示对象的属性创建动画效果;

二是利用Shape类的绘制类进行代码绘制,渲染效果。

ActionScript 3.0的动画编程按照实现的方式可以分为两种:

对显示对象的显示属性进行控制,调整每次刷新屏幕时显示对象的显示属性实现动画效果,这种称为显示属性动画。

利用绘制API在每帧中使用代码绘制不同的形状,从而产生的动画效果,这种称为代码绘制动画。

 

通过编程实现刷新屏幕,ActionScript 3.0中提供了两种方式可供选择:

帧循环更新:利用Flash本身的帧频速度,在每次刷新屏幕时改变显示对象。此方法需要使用事件侦听器侦听显示对象的Event.ENTER_FRAME事件。

定时器更新:利用Timer类的定时更新功能,每隔一定的事件使显示对象改变一次。此方法需要使用事件侦听器侦听显示对象的TimerEvent.TIMER事件。

(2)代码绘制动画效果

代码绘制动画效果,就是每帧绘制的图形有所变化,这样播放起来就形成了动画。绘制代码主要使用Graphics类的绘制API来进行绘制

(3)借助Timer类实现动画效果

使用Timer类产生的动画效果和使用帧循环ENTER_FRAME事件产生动画的原理一样,都是通过间隔一定的时间进行一次刷屏来实现动画效果。(均是通过事件响应达到刷频)

Timer类的TimerEvent.TIMER事件,可能与Flash的刷屏不同步,会产生延迟现象。

使用Timer类实现动画还有几个好处:

可以利用Timer.stop()方法控制动画的播放与停止;

可以在构建Timer对象时控制动画的刷新次数,实现预期动画效果;

可以利用TimerEvent.TIMER_COMPLETE事件,在停止播放时侦听,从事开始新的动作。

注:其他用了再说

 

第10章  数组

(1)分类

数组一般分类两类:索引数组和关联数组。

索引数组:数组中的每个元素都存储在指定编号的位置中,这个位置称为该数组的索引。数组的元素都用唯一的整数下标来索引。该索引的起始值为0,每个元素保存在索引指定的位置。多维数组也可以通过索引来访问数组,也是索引数组。

关联数组:数组中的每个元素都有对应的键值,此键值为唯一的字符串,作为数组元素的索引。关联数组是Object类的实例,每个键值都与一个属性名称对应。关联数组就是键和值对的无序集合。

(2)索引数组常见操作

(3)关联数组

关联数组类似于哈希表或映射。关联数组中使用字符作为元素的索引,该字符通常称为关键字或者属性

有三种方法可以选择:利用Object构造函数创建、使用对象文本创建和使用数组元素创建。

1.利用Object构造函数:构造函数创建关联数组,其格式如下所示。

var 对象数组:Object={关键字1:值,关键字2:值}

2.使用对象文本创建关联数组:该方式在创建时先创建一个对象,不需要初始化对象数据,在使用时再动态的添加关键字和值。

3.使用数组元素创建关联数组:该方式同样先创建一个空白的对象,然后使用数组操作符[]把关联数组的关键字和值追加到关联数组中。

(4)多维数组

 

第15章  文本

(1)文本

文本是显示编程的基础,使用文本,才能够把信息通过舞台显示,才能实现信息的设置和获取。在ActionScript 3.0中,文本一般使用文本字段来显示,有时也会利用系统提供的UI组件显示。

(2)显示文本

Flash中三种文本类型分别为:静态文本、动态文本和输入文本。

静态文本是 一些不会改变的文字此种文本类型只能通过Flash创作工具来创建,而不能使用 ActionScript 3.0创建静态文本实例。此类型文本广泛用于Flash创作,用于在Flash种显示不变的文本。这些文字在发布为SWF格式文件后,显示出来的文字不再改变,不能够再更改。要更改,必须通过修改源文件来实现。在ActionScript 3.0中,虽然无法创建静态文本,但是可以利用ActionScript3.0的StaticText类和 TextSnapshot类来访问和操作静态文本实例。

动态文本是 文本内容可以利用ActionScript3.0脚本动态改变的文本类型。此种文本类型使用 *TextFiled类来管理,需要创建该类的实例。*动态文本的内容可以使用脚本语言利用TextFled类的text属性来实现设定;也可以外部源(例如文本文件、XML 文件以及远程Web服务)加载的内容;还可以接受HTML格式的文本。动态文本可以通过TextField类的实例来访问。

输入文本和动态文本类型相似,都是可以动态的改变文字内容,唯一的区别是输入文本类型可以让使用者输入内容。输入文本可以利用样式表来设置输入文本的格式,也使用 TextFormat类为输入内容指定文本字段的属性。输入文本也可以通过TextField类的实例来访问。

 

 

第16章  字符串

(1)字符串处理

 

第17章  正则表达式

(1)构成

正则表达式一般由两个部分组成。一部分是在双斜杠内部的字符串,称为 匹配模式,用来表示要匹配的字符串的特征;另一部分是在第二个斜杠的后面,是一个字母,叫做正则表达式的 标志位由五个字母组合而成,具体请参见17.2.5节。

匹配模式由两部分组成,分别为:普通字符(例如字符a到z)和特殊字符(称为元字符)。正则表达式描述在查找字符串时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。

正则表达式的定义方法有两种,一种是上例中的方法,使用双斜杠来定义,语法格式如下所示:

var 正则表达式:RegExp=/匹配模式/标志位

 

 

第18章  位图和滤镜

(1)Bitmap类

Bitmap类用来表示位图图像的显示对象。这些图像可以是使用显示对象的Loader类加载的外部图像,也可以是使用Bitmap()构造函数创建的图像。 **Bitmap类创建的图像,其信息可以使用其BitmapData属性来引用并处理。**Bitmap对象是一种显示对象,因此可以使用显示对象的属性和方法来进行操作和控制。此外,Bitmap对象还有两个常用的属性:PixelSnapping象素贴紧和smoothing平滑。

PixelSnapping象素贴紧属性用于控制Bitmap对象是否贴紧至最近的像素。PixelSnapping属性包括以下可能值:

PixelSnapping.NEVER:不进行像素贴紧。

PixelSnapping.ALWAYS:图像始终与最近的像素贴紧,与变形无关。

PixelSnapping.AUTO:如果绘制图像时未应用旋转或倾斜效果,并且图像是以99.9%到100.1%的缩放系数绘制的,则图像将与最近的像素贴紧。

(2)BitmapData类

BitmapData类用于处理Bitmap对象的像素数据,也可以使用BitmapData类的方法创建任意大小的透明或不透明位图图像,并在运行时采用多种方式操作这些图像。此类还可以访问使用显示对象的Loader类加载的位图图像的BitmapData值。

(3)创建位图

创建位图,需要把Bitmap类和BitmapData类结合使用。使用Bitmap类创建位图对象,使用BitmapData类创建Bitmap对象的数据信息,最后使用Bitmap对象的构造函数或bitmapdata属性获得BitmapData创建的数据。

Bitmap类的构造函数格式如下所示:

Bitmap(bitmapData,pixelSnapping,smoothing)

参数说明如下:

bitmapData:被引用的BitmapData对象数据。默认值为null。

pixelSnapping:确定Bitmap对象是否贴紧至最近的像素。默认值为“auto”。

smoothing:确认在缩放时是否对位图进行平滑处理。默认值为false。

(4)其他处理

 

第19章  日期与时间

(1)Date类

在ActionScript 3.0中,Date类是顶级类,用于表示日期和时间信息。Date类的实例表示一个特定时间点(时刻),也可以查询或修改该时间点的属性,比如月、日、小时和秒等信息。

(2)创建时间日期

要创建一个日期和时间,需要使用Date类的构造函数。使用此方法,可以构造一个新的Date对象,并未该对象保存指定的日期和时间。依据对构造函数指定的参数不同,可以使用不同的方法来构建不同的日期和时间,具体有4种方式可以选择。

1.不使用参数

2.使用Number类型数据为参数

3.使用String类型数据作为参数

4.使用Date对象的多个参数

(3)获取时间日期

在ActionSctipt 3.0中,可以使用 Date类的属性或方法从Date对象中提取各种时间单位的值。下面介绍常用的Date属性用于获取Date对象中的一个时间单位的值:

fullYear:按照本机时间返回Date对象中的完整年份值,用四位数表示。

month:返回当前的月份,以数字格式表示,分别以0到11表示一月到十二月。

date:表示月中某一天的日历数字,范围从1到31

day:以数字格式表示一周中的某一天,其中0表示星期日,6表示星期六。

hours:用于表示当前的小时数,范围从0到23。

minutes:表示当前的分钟。

seconds:表示当前的秒。

milliseconds:表示当前的毫秒。

(4)获取月份日期

无论是使用day和months属性,还是使用getDay()和getMonths()方法,获取的星期和月份格式都与中国的使用习惯不同,所以有必要对月份和星期进行处理,以实现更好的使用效果。

(5)获取时间间隔

(6)使用Timer

Timer类有4个属性,3个方法,2个事件。下面来简单介绍这些属性和方法。

currentCount:计时器从0开始后执行代码的总次数。此属性在重置计时器后,只计入重置后的执行次数。

delay:计时器事件间以毫秒为单位的延迟时间。如果在计时器正在运行时设置延迟间隔,则计时器将按相同的重复执行次数重新启动计时器。

running:反映计时器的当前状态。如果计时器正在运行,则为true,否则为false。

reset()方法:如果计时器正在运行,则停止计时器,并将当前执行次数属性设回为0,在调用start()方法后,将在此执行程序代码。

start()方法:启动计时器的方法。

stop()方格:停止计时器。若在调用stop()后调用start(),则将继续运行计时器实例,运行次数为剩余的重复次数。

Timer事件 :每当Timer对象达到根据delay属性指定的间隔时调度

timerComplete事件: 每当它完成repeatCount设置的执行次数后调度此事件

 

第21章  XML

(1)XML

XML的语法非常简单、直白,是一种自描述的语法。一个XML文档最基本的组成包括声明、命名、标记、元素和注释。具体介绍如下:

1.文档声明

<?xml version="1.0" encoding="GB2312"?>

2.命名规则

3.元素与标记

元素是构成XML文档的主要内容。XML的元素又是通过标记来定义的,常用的定义方式有两种:非空标记和空标记。 

4.注释

注释是在文档中用于说明相关内容的语句,其在文档中没有实际的作用。 

要设计一个优秀的XML文档,需要实现下面的几个特征:

元素分类要清晰,同类元素的标记要一致,结构相同。

父级子级元素逻辑关系清晰。

要有长远的考虑,便于扩展。

属性和子元素的使用在整个文档中要保持一致

 

(2)XML对象

利用XML类的属性和方法,来实现对XML文件的加载、访问和修改

(3)创建XML对象

在ActionScript 3.0中,能够创建XML对象的方法有以下几种,分别为:

传递XML格式字符串给XML的构造函数。

创建XML对象并直接使用XML进行赋值。

创建一个空的XML对象,然后使用E4X填充数据。

创建空的对象,从外部读取数据。

1.使用构造函数创建XML对象

2.直接创建XML对象并赋值

3.动态创建XML对象

(4)加载XML

在ActionScript编程中,所使用的XML文件通常都采用的是外部的XML文件,这就需要先加载外部的XML文件。加载的过程如下:

使用URLRequest类创建URL链接地址信息。

使用URLLoader类的方法从指定的URL获取XML格式数据。

(5)增加XML元素和属性

在ActionScript 3.0中,提供了两个简单的运算符来实现在XML对象中添加元素和属性,分别为点号“.”,属性标识运算符“@”。

XML类是一个 动态类,所以在其对象上添加元素和属性,就和向一个对象(Object)实例添加属性的方法相同。

(6)删除XML元素和属性

要删除XML对象中的一个子元素或者属性,只需使用delete关键字执行删除指令即可。

(7)访问XML元素和属性

ActionScript 3.0中,同样可以使用点运算符和@运算符来访问XML的元素和属性。

注意相同的用[序号]实现访问

 

第23章  AS3.0异常处理

(1)概念

**异常(**Exception)是指在程序运行时发生的错误,并且运行时环境(即Flash Player)无法自行解决该问题。

所谓的运行时错误是指在Adobe Flash Player中运行ActionScript内容的ActionScript代码中所出现的错误。

所谓的捕获(Catch)异常是指如果发生了异常即运行时错误,并且代码注意到该异常,则认为该代码“捕获”了异常。捕获异常后,Flash Player将停止通知其对应的ActionScript代码发生了异常。

运行时错误可以分为以下两类:

程序错误:指ActionScript代码中的错误,比如为方法参数指定了错误的数据类型。

逻辑错误:指程序的逻辑(数据检查和值处理)错误。

(2)使用try-catch-finally处理异常

(3)errors类

输入输出异常(IOError)类 

读取异常(EOFError)类

堆栈异常(StackOverflowError)类

代码交流 2021