ActionScript30完全自学手册电子教案

上传人:熏** 文档编号:240743202 上传时间:2024-05-04 格式:PPT 页数:498 大小:3.61MB
返回 下载 相关 举报
ActionScript30完全自学手册电子教案_第1页
第1页 / 共498页
ActionScript30完全自学手册电子教案_第2页
第2页 / 共498页
ActionScript30完全自学手册电子教案_第3页
第3页 / 共498页
点击查看更多>>
资源描述
第1章 AcionScript 3.0概述ActionScript 3.0是针对Flash Player运行时环境的编程语言,它用于处理各种人机交互、数据交互等功能。本章将粗略的介绍ActionScript语言的发展历史、新增特色、编程环境等内容,以及第一个ActionScript3.0程序。1.1 关于ActionScript 3.0ActionScript3.0是随着Adobe Flash CS3和Flex 2.0的推出而同步推出的脚本编程语言。本节将对ActionScript3.0进行简要的介绍,并通过一些具体的实例图片,展示了常见的ActionScript的应用领域。1.1.1 ActionScript 3.0介绍ActionScript3.0与ActionScript以前的版本有个本质上的不同。它是一门功能强大、符合业界标准的一门面向对象的编程语言。它在Flash编程语言中有着里程碑的作用,是用来开发富应用程序(RIA)的重要语言。ActionScript 3.0在用于脚本撰写的国际标准化编程语言ECMAScript的基础之上,对该语言做了进一步的改进,可为开发人员提供用于丰富Internet应用程序(RIA)的可靠的编程模型。开发人员可以获得卓越的性能并简化开发过程,便于利用非常复杂的应用程序、大的数据集和面向对象的、可重复使用的基本代码。ActionScript 3.0在Flash Player 9中新的ActionScript虚拟机(AVM2)内执行,可为下一代RIA带来性能突破。1.1.2 ActionScript 3.0能做什么最初在Flash中引入ActionScript,目的是为了实现对Flash影片的播放控制。而ActionScript发展到今天,其已经广泛的应用到了多个领域,能够实现丰富的应用功能。ActionScript 3.0最基本的应用与创作工具Adobe Flash CS3结合,创建各种不同的应用特效,实现丰富多彩的动画效果,使Flash创建的动画更加人性话,更具有弹性效果。这些基础应用当中,应用最为广泛的就是使用ActionScript脚本控制的弹性菜单。下面是一个弹性的效果,1.2 ActionScript 3.0的新特色ActionScript 3.0包括二部分:核心语言和Flash Player API。核心语言用于定义编程语言的基本结构,比如声明变量,创建表达式控制程序结构和数据类型等。Flash Player API是由一系列用于实现特定功能的flash player类组成。1.2.1 核心语言的新特色ActionScript3.0核心语言与ECMAScript标准兼容,并和新改进的一些功能区域进行结合。下面是对一些其开发者方便的地方和用法总结的一些新特点:1运行时的异常处理机制2运行时类型3密封类4闭包方法5E4X6正则表达式7命名空间8新基元类型1.2.1 Flash Player API 新功能Flash Player API为增强Flash Player容纳ActionScript语言的能力而引入的一组类和功能。这种功能把ActionScript核心语言和Flash平台之间建立了一座桥梁,大大提高了Flash应用程序的能力,并对核心语言起到了重要的补充作用。下面列出一些Flash Player API功能的新特点:1DOM3事件模型2显示列表API1.3 Flash CS3的动作面板介绍Flash CS3中可以使用动作面板、“脚本窗口”或者外部编辑器的创作环境中田间ActionScript代码。本节就来介绍一下Flash CS3的动作面板窗口和Flash CS自带的编辑器窗口,并将详细的介绍功能按钮的作用。1.3.1 动作面板概述如果要在Flash CS3中加入ActionScript代码,可以直接使用动作面板来输入。要打开动作面板,请执行下面的操作:单击【窗口|【动作】,或者按【F9】。打开后的动作面板如图所示。下面对图中各部分的名称及作用加以说明。A:脚本窗格,用于输入代码的地方。B:面板菜单,单击后可显示动作面板功能菜单C:动作工具箱,可以通过双击或者拖动的方式将其中的ActionScript元素添加到脚本窗格中。D:脚本导航器,其有两个功能,一是通过单击其中的项目,可以将与该项目相关的代码显示在脚本窗口中,二是通过双击其中的项目,对该项目的代码进行固定操作。1.3.2 脚本窗口概述Action Script 3.0是很好的面向对象编程语言,同样Flash CS3也提供了一个很不错的脚本编辑器,这就是Flash的脚本窗口。使用脚本窗口可以创建或者导入外部的脚本文件,这些文件可以是ActionScript、Flash Communication或Flash JavaScript文件。1.3.3 动作面板和脚本窗口的工具介绍在动作面板和脚本窗口的上侧都有一排功能按钮,利用这些功能按钮可以很方面的进行ActionScript代码的输入和编写,下面对这些按钮进行具体的说明。:将新项目添加到脚本中按钮,该按钮主要用于显示语言元素,这些元素同时也会显示在“动作”工具箱中。可以利用它来选择要添加到脚本中的项目或者元素名称。:查找按钮,主要用于查找并替换脚本中的文本。:插入目标路径按钮(仅限动作面板),可以帮助为脚本中的某个动作设置绝对或相对目标路径。:语法检查按钮,用于检查当前脚本中的语法错误。:自动套用格式按钮,用来调整脚本的格式以实现正确的编码语法和更好的可读性。:显示代码提示按钮:用于在关闭了自动代码提示时,可使用此按钮来显示正在吃力的代码行的代码提示。:调试选项按钮(仅限动作面板),用于设置和删除断点,以便在调试时可以逐行执行脚本中的每一行。1.3.3 动作面板和脚本窗口的工具介绍:折叠成对大括号按钮,用于对出现在当前包含插入点的成对大括号或小括号间的代码进行折叠。:折叠所选按钮:用于折叠当前所选的代码块。:展开全部按钮:用于展开当前脚本中所有折叠的代码。:应用块注释按钮,用于将注释标记添加到所选代码块的开头和结尾。:应用行注释按钮,用于在插入点处或所选多行代码中每一行的开头处添加单行注释标记。:删除注释按钮,用于从当前行或当前选择内容的所有行中删除注释标记。:显示/隐藏工具箱按钮,用于显示或隐藏“动作”工具箱。:脚本助手按钮(仅限动作面板),其用于打开和关闭“脚本助手”模式。:帮助按钮,用于显示“脚本”窗格中所选 ActionScript 元素的参考信息。:面板菜单(仅限动作面板),包含适用于动作面板的命令和首选参数。1.4 ActionScript 3.0的首选参数设置无论是在动作面板还是脚本窗口中编辑ActionScript代码,都可以通过设置首先参数来配置输入的ActionScript代码的格式。要设置ActionScript 3.0的首选参数,需要先打开首选参数窗口。请执行下面的操作:选择【编辑】|【首选参数】,打开首选参数对话框,1.工具提示样式的代码提示2使用菜单样式的代码提示1.5 面向对象编程概述ActionScript 3.0是为面向对象编程而准备的一种脚本语言。本节将简单介绍一下面向对象编程的基本概念。面向对象编程,英文为:Object Oriented Programming,简写为OOP,意思为面向对象程序设计,它是一种计算机编程架构。程序(program)是为实现特定目标或者解决特定问题而用计算机语言编写的命令序列的集合。它可以是一些高级程序语言开发出来的可以运行的可执行文件,也可以是一些应用软件制作出的可执行文件,比如Flash编译之后的SWF文件。编程是指为了实现某种目的或需求,使用各种不同的程序语言进行设计,编写能够实现这些需求的可执行文件。1.6 Flash CS3的第一个“Welcome You”Flash CS3中有两种写入ActionScript 3.0代码的方法:一种是在时间轴的关键帧加入ActionScript代码。另一种是在外部写出呢个单独的ActionScript类文件,然后在绑定或者导入到fla文件中来。ActionScript中的类有三种用法:一是和Flash中的库元件进行绑定;二是和fla文件绑定;三是使用import关键字导入类。ActionScript3.0开发的程序,推荐文档与代码分离,不推荐把代码写在关键帧上。下面用两种方法来开始第一个“Welcome You”程序。1在关键帧上加入代码2利用文档类制造第一个“Welcome You”程序第2章 AS3.0编程语言基础语法、数据、变量、运算符和语句构成了编程语言的基础。本章将通过大量的测试代码。详细的介绍ActionScript 3.0中的语法、数据类型,变量以及运算符。通过本章的学习,为以后的面向对象编程将打下一个坚实的基础。2.1 AS3.0语法任何一门编程语言在编写代码时都必须遵循一定的规则,这个规则就是语法。本节将着重介绍从ActionScript 2.0开始使用的点语法和区分大小写,了解编程常用的标点符号的使用,以及程序注释的使用方法。2.1.1 点语法Flash中使用点(.)运算符来访问对象的属性和方法,点运算符主要用于下面的几个方面。1可以采用对象后面跟点运算符的属性名称(方法)名称来引用对象的属性(方法)。2可以采用点运算符表示包路径。3可以使用点运算符描述显示对象的路径。2.1.2 标点符号使用在Flash中有多种标点符号都很常用,分别为:分号(;)、逗号(,)、冒号(:)、小括号(())、中括号()和大括号()。这些标点符号在Flash中都有各自不同的作用,可以帮助定义数据类型,终止语句或者构建ActionScript代码块。1分号(;):ActionScript语句用分号(;)字符表示语句结束。2逗号(,):逗号的作用主要用于分割参数,比如函数的参数,方法的参数等等。3冒号(:):冒号的作用主要用于为变量指定数据类型。要为一个变量指明数据类型,需要使用var关键字和后冒号法为其指定。4小括号(()):小括号在ActionScript3.0中有三种用途。首先,在数学运算方面,可以用来改变表达式的运算顺序。小括号内的数学表达式优先运算。其次,在表达式运算方面,可以结合使用小括号和逗号运算符,来优先计算一系列表达式的结果并返回最后一个表达式的结果。5中括号():中括号主要用于数组的定义和访问,6大括号():大括号主要用于编程语言程序控制,函数和类中。在构成控制结构的每个语句前后添加大括号(例如if.else 或for),即使该控制结构只包含一个语句。2.1.3 注释注释是使用一些简单易懂的语言对代码进行简单的解释的方法。注释语句在编译过程中并不会进行求值运算。可以用注释来描述代码的作用,或者返回到文档中的数据。注释也可以帮助记忆编程的原理,并有助于其他人的阅读。若代码中有些内容阅读起来含义大不明显,应该对其添加注释。ActionScript3.0中的注释语句有两种:单行注释和多行注释。单行注释以两个单斜杠(/)开始,之后的该行内容均为注释。比如下面的代码:trace(1234)/输出:12342.1.4 关键字和保留字保留字,从字面上就很容易知道这是保留给ActionScript 3.0语言使用的英文单词。因而不能使用这些单词作为变量、实例、类名称等。如果在代码中使用了这些单词,编译器会报错。ActionScript3.0中的保留字分为3类:词汇关键字、语法关键字和供将来使用的保留字。1词汇关键字2句法关键字3供将来使用的保留字。2.2 变量和常量变量和常量,都是为了储存数据而创建的。变量和常量就像是一个容器,用于容纳各种不同类型的数据。当然对变量进行操作,变量的数据就会发生改变,而常量则不会。变量必须要先声明后使用,否则编译器就会报错。道理很简单,比如现在要去喝水,那么你首先要有一个杯子,否则怎么样去装水呢?要声明变量的原因与此相同。2.2.1 声明变量的语法在ActionScript 3.0中,使用var关键字来声明变量。格式如下所示。var 变量名:数据类型;var 变量名:数据类型=值;变量名加冒号加数据类型就是声明的变量的基本格式。要声明一个初始值,需要加上一个等号并在其后输入响应的值。但值的类型必须要和前面的数据类型一致。2.2.2 变量的命名规则变量的命名既是任意的,又是有规则,有目的的。随手牵来、杂乱无章的命名在Flash里面容易引起代码的混乱,也不容易进行维护操作。变量的命名首先要遵循下面的几条原则:它必须是一个标识符。它的第一个字符必须是字母、下划线(_)或美元记号($)。其后的字符必须是字母、数字、下划线或美元记号。注意:不能使用数字作为变量名称的第一个字母。它不能是关键字或动作脚本文本,例如true、false、null或undefined。特别不能使用ActionScript的保留字,否则编译器会报错。它在其范围内必须是惟一的,不能重复定义变量。2.2.3 变量的作用域变量的作用域指可以使用或者引用该变量的范围,通常变量按照其作用域的不同可以分为全局变量和局部变量。全局变量指在函数或者类之外定义的变量,而在类或者函数之内定义的变量为局部变量。全局变量在代码的任何地方都可以访问,所以在函数之外声明的变量同样可以访问,如下面的代码,函数Test()外声明的变量i在函数体内同样可以访问。var i:int=1;/定义Test函数function Test()trace(i);Test()/输出:12.2.4 变量的默认值变量的默认值是指变量在没有赋值之前的值。对于ActionScript3.0的数据类型来说,都有各自的默认值,下面使用代码来测试一下:通过上面的代码输出,已经可以得到这些数据类型变量的默认值,分别为:Boolean型变量的默认值是:false。int型变量的默认值是:0。Number型变量的默认值是:NaN。Object型变量的默认值是:null。String型变量的默认值是:null。uint型变量的默认值是:0。*型变量的默认值是:undefined。2.2.5 使用const声明常量Action Script 3.0中增加了一个const关键字,用于声明常量。常量是指具有无法改变的固定值的属性。比如Math.PI就是一个常量。常量可以看做一种特殊的变量,不过这种变量不能赋值,不能更改而已。使用用const声明常量的语法格式和var声明的变量的格式一样:const 常量名:数据类型;const 常量名:数据类型=值;下面声明常量的代码:const g:Number=9.8;2.3 基础数据类型和其它的面向对象的编程的数据类型一样,ActionScript3.0的数据类型同样分为两种,具体划分方式如下所示。基元型数据类型:Boolean、int、Number、String和uint。复杂型数据类型:Array、Date、Error、Function、RegExp、XML和XMLList。一般来说,基元值的处理速度通常比复杂值的处理速度要快。基元型数据和复杂型数据类型的最大的区别是:基元型是值对类型数据,而复杂型是引用类型数据。值对类型直接储存数据,使用它为另一个的变量赋值之后,若另一个变量改变,并不影响原变量的值。引用类型指向要操作的对象,另一个变量引用这个变量之后,若另一变量发生改变,原有的变量跟着也要发生改变。基元型数据类型都是值对类型数据,复杂型数据都是引用类型数据。另外,最明显的一个区别是,如果数据类型能够使用new关键字创建,那么它一定是引用型数据变量。2.3.1 基础数据类型说明本节通过大量的测试代码,来说明各种不同的数据类型的用法和使用中的注意事项。1Boolean 数据类型2数字:int、uint和Number3String 数据类型4Array数组类型5Object数据类型6Object数据类型 2.3.2 数据类型检查任何编程代码在执行前或者执行时都要执行数据类型的检查,以避免出现数据错误。ActionScript 3.0是动态类型的语言,它默认的是执行时进行数据类型检查。同时它也在适合使用“严格模式”的编译器在编译时执行数据类型检查。在使用严格模式的编译器中,数据类型检查既可以在执行前执行编译器检查,也可以在运行时执行运行时检查。在标准模式下,只支持默认的执行时数据类型检查。比如说在程序编写过程中,要明确传递变量值的类型和接受参数类型相同。比如下面的代码:function func(mystr:String)trace(mystr);var str:String=welcome you;func(str);2.3.3 隐式数据类型转换数据类型转换是指把某个值转换为其它类型的数据。类型的转换有两种方式:隐式转换和显式转换。隐式转换又称为强制转换,由Flash Player在运行时执行。比如将2赋值给Boolean数据类型的变量,则Flash Player会先将2转换为布尔值true,然后再将其赋值给该变量。隐式转换可以称为自动转换,是在程序编译的过程中由程序本身来进行数据类型的转换。它主要发生在许多上下文中。主要分为以下几种情况:在赋值语句中。在将值作为函数的参数传递时。在从函数中返回值时。在使用某些运算符(如加法运算符(+)的表达式中。2.3.4 显式数据类型转换显式转换是指代码若指示编译器将一个数据类型的变量视为属于另一个类型的变量时执行该转换。该转换主要利用数据类型的对象名称来转换。常用的数据转换均为此方式。显示转换是利用数据类型的对象名称来转换,常见的主要有下面的几种。1转换为 int、uint 和 Number转换为Boolean转换为 String2.3.5 无类型说明符ActionScript 3.0引入了三种特殊类型的无类型说明符:*,void和null。使用*类型用于指定属性是无类型的。使用*作为类型注释与不使用类型注释等效。从无类型属性中读取的表达式可视为无类型表达式。该说明符主要用于两个方面:将数据类型检查延缓到运行时和将undefined存储在属性中。void用于说明定函数无法返回任何值。void类型只有一个值:undefined。该说明符仅用于声明函数的返回类型。null是一个没有值的特殊数据类型。Null数据类型只有一个值:null。Null数据类型的不与任何类相关联。不可将Null数据类型用作属性的类型注释。2.4 运算符与表达式学习一门编程语言,首先要弄清楚的就是如何对其中的数据进行运算。使用表达式来表达想要达到的效果,使用运算符来进行相关的运算,这就是数据运算的关键。本节主要介绍常用的运算符的用法。2.4.1 运算符和表达式基础知识运算符是可以通过给出的一个或者多个值来产生另一个值的东西。可以说它是一种特殊的函数。其中的值称为“操作数”,具体包括字面值、变量和表达式。运算符分为三种:一元运算符、二元运算符、三元运算符。一元运算符只运算一个值,例如递增运算符+;二元运算符比较常见,ActionScript 3.0中大部分运算符都是二元运算符;三元运算符具有三个操作数,例如条件运算符(?:)具有3个操作数。2.4.2 赋值运算符赋值运算符有两个操作数,它根据一个操作数的值对另一个操作数进行赋值操作。ActionScript中的赋值运算有12个,赋值运算符运算符执行的运算=赋值*=乘法赋值/=除法赋值%=求模赋值+=加法赋值-=减法赋值=按位向右移位赋值=按位无符号向右移位赋值&=按位与赋值=按位异或赋值|=按位或赋值2.4.3 算术运算符算术运算符共有6个,分别为:加、减、乘、除、模运算和求反运算。加、减、乘、除的运算很简单,请看下面的代码示例:var a:int=1;var b:int=2;var c:int=a+b;var d:int=a-b;var e:int=a*b;var f:int=a/b;2.4.4 算术赋值运算符算术赋值运算符和算术运算符对应,共有5个,分别为+=、-=、*=、/=和%=。和赋值运算符一样,运算符的左边只能是变量。右侧是一个要值、变量或表达式。这种类型的赋值运算符有时也叫做自赋值运算符,就是利用自己进行运算并赋值给自己。比如下面的代码语句:a+=1;其要表达的运算过程就是下面的的代码要执行的运算过程。a=a+1;2.4.5 关系运算符关系运算符用于比较两个操作数的值的大小关系。常见的关系运算符一般分为两类:一类用于判断大小关系,一类用于判断相等关系。其具体情况如下:判断大小关系:大于运算符、=大于等于运算符、=小于等于运算符。判断相等关系:等于运算符、!=不等于运算符、=严格等于运算符、!=严格不等于运算符。关系运算符左右两侧可以是数值、变量或者表达式。关系表达式的结果是Boolean值,flase或者true。1判断大小关系的运算符2判断相等关系的运算符:2.4.6 逻辑运算符逻辑运算符有3个,分别为:&逻辑“与”运算符、|逻辑“或”运算符和!逻辑“非”运算符。逻辑运算符常用于逻辑运算,运算的结果为Boolean型。逻辑与(&)和逻辑或(|)运算表达式要求左右两侧的表达式或者变量必须是Boolean型的值。&:左右两侧有一个为flase,结果都为flase;只有两侧都为true,结果才为true。|:左右两侧有一个为true,结果都为true;只有两侧都为false,结果才为false。2.4.7 按位和按位赋值运算符按位运算符共有6个,分别为:&按位“与”、按位“异或”、|按位“或”、按位右移位、按位无符号移位。同样,按位赋值运算符也有6个,对照按位运算符分别为:&=按位“与”赋值、=按位“异或”赋值、|=按位“或”赋值、=按位右移位赋值、=按位无符号移位赋值。按位操作需要把十进制的整数,转换为二进制的数,然后进行操作。按位与操作过程:按位与操作的规则为:1+1=1,1+0=0,0+1=0,0+0=0。比如11&34,11转二进制数为001011,34转二进制数为100010。现在按照位置从右向左第一位分别为1和0,所以取与后仍为0,依次取与的最后结果为000010。000010转为十进制数为2,所以最后的输出结果为2。代码如下所示。var a:int=11;var b:int=34;trace(a&b);/输出为:22.4.8 递加递减运算符+递加运算符和递减运算符常用于循环计算过程中,对循环中的变量进行递加或者递减操作。比如i+,它等价于i=i+1。测试代码如下:var i:int=0i+trace(i)/输出:1同样,i等价于i=i-1。测试代码如下:var i:int=5;i-;trace(i);/输出:42.4.9 三元条件运算符?:运算符是唯一的一个三元运算符,也就是说,这个运算符有三个操作数。具体的语法格式如下:(条件表达式)?(表达式1):(表达式2)格式说明如下:条件表达式:判断表达式,通过逻辑判断,得到一个Boolean型的结果。表达式1:判断表达式的结果为true,执行该语句。表达式2:判断表达式的结果为false,执行该语句。2.4.10 其它运算符在ActionScript3.0中还有几个常见的运算符,如:typeof、is、as。下面对这几个运算符进行简单的说明:1typeof运算符:typeof用于测试对象的的类型,使用的方法如下:typeof(对象);2is运算符:is运算符用于判断一个对象是不是属于一种数据类型,返回Boolean型变量。如果对象属于同一类型,则返回true,否则返回false。3as运算符:as运算符和is运算符的使用格式相同,但是返回的值不同。如果对象的类型相同,返回对象的值;若不同,则返回null。2.4.11 运算符的优先级运算符的优先级顺序决定了一个表达式运算顺序。就像数学中的乘除运算要优于加减运算一样,ActionScript 3.0 中的各运算符之间也有一个优先运算的顺序。具体请参照表所示。运算符优先顺序表组运算符主要x:y()f(x)newx.yxy:.后缀x+x-一元+x-x+-!deletetypeofvoid乘法*/%加法+-按位移位关系=asininstanceofis等于=!=!=按位与&按位异或按位或|逻辑与&逻辑或|条件?:赋值=*=/=%=+=-=&=|=逗号,第3章 AS3.0程序设计任何一门编程语言都要设计程序问题,ActionScript 3.0也不例外。在本章中,将介绍ActionScript3.0系统的基本语句以及程序设计的一般过程。首先介绍一下程序控制的逻辑运算,然后着重介绍条件语句和循环语句。3.1 逻辑运算在程序设计的过程中,要实现程序设计的目的,必须进行逻辑运算。只有进行逻辑运算,才能控制程序不断向最终要达到的目的前进,知道最后实现目标。逻辑运算又称为布尔运算,通常用来测试真假值。逻辑运算主要使用条件表达式进行判断,如果符合条件,则返回结果true,不符合条件,返回结果false。条件表达式中最常见的形式就是利 用关系运算符进行操作数比较,进而得到判断条件。当然,有的情况下需要控制的条件比较多,那么就需要使用逻辑表达式进行逻辑运算,得到一个的组合条件,并控制最后的输出结果。常见的条件表达式举例如下:(a0):表示判断条件为a0。若是,返回true;否则返回false。(a=b)&(a0):表示判断条件为a大于0,并且a与b相等。若是,返回true,否则返回false。(a=b)|(a0):表示判断条件为a大于0,或者a与b相等。若是,返回true,否则返回false。3.2 程序的三种结构在程序设计的过程中,如果控制程序,如何安排每句代码执行的先后次序,这个先后执行的次序,称之为“结构”。常见的程序结构有三种:顺序结构、选择结构和循环结构。本节将逐个介绍一下这三种程序结构的概念和流程。3.2.1 顺序结构顺序结构最简单,就是按照代码的顺序,一句一句的执行操作,结构如图3-1所示。ActionScript代码中的简单语句都是按照顺序进行处理,这就是顺序结构。请看下面的示例代码。/执行的第一句代码,初始化一个变量var a:int;/执行第二句代码,给变量a赋值数值1a=1;/执行第三句代码,变量a执行递加操作a+;3.2.2 选择结构当程序有多种可能的选择时,就要使用选择结构。选择那一个,要根据条件表达式的计算结果而定。结构如图所示。3.2.3 循环结构循环结构就是多次执行同一组代码,重复的次数由一个数值或条件来决定。结构如图所示。3.3 选择程序结构选择程序结构就是利用不同的条件去执行不同的语句或者代码。ActionScript 3.0有三个可用来控制程序流的基本条件语句。其分别为if.else条件语句、if.else if条件语句、switch条件语句。本节将详细讲解这三种不同的选择程序结构。3.3.1 if.else 条件语句if.else条件语句判断一个控制条件,如果该条件能够成立,则执行一个代码块,否则执行另一个代码块。if.else条件语句基本格式如下:if(表达式)语句1else语句2;3.3.2 if.else if.else语句if.else条件语句执行的操作最多只有两种选择,要是有更多的选择,那就可以使用if.else if.else条件语句。3.3.3 Switch语句Switch语句相等于一系列的if.else if.语句,但是要比if语句要清晰的多。switch 语句不是对条件进行测试以获得布尔值,而是对表达式进行求值并使用计算结果来确定要执行的代码块。Switch语句格式如下:switch(表达式)case:程序语句1;break;case:程序语句2;break;case:程序语句3;break;default:默认执行程序语句;3.4 循环程序结构在现实生活中有很多规律性的操作,作为程序来说就是要重复执行某些代码。其中重复执行的代码称为循环体,能否重复操作,取决于循环的控制条件。循环语句可以认为是由循环体和控制条件两部分组成。循环程序结构的结构一般认为有两种:一种先进行条件判断,若条件成立,执行循环体代码,执行完之后再进行条件判断,条件成立继续,否则退出循环。若第一次条件就不满足,则一次也不执行,直接退出。另一种是先执行依次操作,不管条件,执行完成之后进行条件判断,若条件成立,循环继续,否则退出循环。3.4.1 for循环语句for循环语句是ActionScript编程语言中最灵活、应用最为广泛的语句。for循环语句语法格式如下:for(初始化;循环条件;步进语句)循环执行的语句;格式说明如下:初始化:把程序循环体中需要使用的变量进行初始化。注意要使用var关键字来定义变量,否则编译时会报错。循环条件:逻辑运算表达式,运算的结果决定循环的进程。若为flase,退出循环,否则继续执行循环代码。步进语句:算术表达式,用于改变循环变量的值。通常为使用+(递增)或-(递减)运算符的赋值表达式。循环执行的语句:循环体,通过不断改变变量的值,已达到需要实现的目标。3.4.2 while循环语句while循环语句是典型的“当型循环”语句,意思是当满足条件时,执行循环体的内容。while循环语句语法格式如下:while(循环条件)循环执行的语句格式说明如下:循环条件:逻辑运算表达式,运算的结果决定循环的进程。若为true,继续执行循环代码,否则退出循环。循环执行的语句:循环体,其中包括变量改变赋值表达式,执行语句并实现变量赋值。3.4.3 do.while循环语句dowhile循环是另一一种while循环,它保证至少执行一次循环代码,这是因为其是在执行代码块后才会检查循环条件。dowhile循环语句语法格式如下:do 循环执行的语句 while(循环条件)循环执行的语句:循环体,其中包括变量改变赋值表达式,执行语句并实现变量赋值。循环条件:逻辑运算表达式,运算的结果决定循环的进程。若为true,继续执行循环代码,否则退出循环。3.4.4 for.in和for each.in语句for.in和for each.in语句都可以用于循环访问对象属性或数组元素。下面分别使用两种语句来访问对象中的属性。代码如下所示。/定义一个对象lzxt,并添加属性name和agevar lzxt:Object=name:浪子啸天,age:30;/执行遍历操作for(var i:String in lzxt)/输出属性名称和属性值trace(for in 语句输出:+i+:+lzxti);/执行for each遍历操作for each(var k:String in lzxt)/输出属性值trace(for each 语句输出:+k);3.4.5 循环的嵌套嵌套循环语句,就是在一个循环的循环体中存在另一个循环体,如此重复下去直到循环结束为止,即为循环中的循环。以for循环为例,格式如下所示。for(初始化;循环条件;步进语句)for(初始化;循环条件;步进语句)循环执行的语句;3.4.6 循环流程控制语句在ActionScript 3.0中可以使用break和continue来控制循环流程。break语句的结果是直接跳出循环,不再执行后面的语句;continue语句的结果是停止当前这一轮的循环,直接跳到下一轮的循环,而当前轮次中continue后面的语句也不再执行。下面的两个例子分别执行循环变量从0递增到10的过程,如果i等于4,分别执行break和continue语句,看发生的情况。代码如下所示。/使用break控制循环for(var i:int=0;i10;i+)if(i=3)break;trace(当前数字是:+i);第4章 函数函数在程序设计的过程中,是一个革命性的创新。利用函数编程,可以避免冗长、杂乱的代码;利用函数编程,可以重复利用代码,提高程序效率;利用函数编程,可以便利的修改程序,提高编程效率。函数(Function)的准确的定义为:执行特定任务,并可以在程序中重用的代码块。ActionScript 3.0中有两类函数:“方法”和“函数闭包”。具体是将函数称为方法还是函数闭包,取决于定义函数的上下文。4.1 定义函数在ActionScript 3.0中有两种定义函数的方法:一种是常用的函数语句定义法;一种是ActionScript中独有的函数表达式定义法。具体使用哪一种方法来定义,要根据编程习惯来选择。一般的编程人员使用函数语句定义法,对于有特殊需求的编程人员,则使用函数表达式定义法。4.1.1 函数语句定义法函数语句定义法是程序语言中基本类似的定义方法,使用function关键字来定义,其格式如下所示。function 函数名(参数1:参数类型,参数2:参数类型):返回类型/函数体代码格式说明:function:定义函数使用的关键字。注意function关键字要以小写字母开头。函数名:定义函数的名称。函数名要符合变量命名的规则,最好给函数取一个与其功能一致的名字。小括号:定义函数的必需的格式,小括号内的参数和参数类型都可选。返回类型:定义函数的返回类型,也是可选的,要设置返回类型,冒号和返回类型必须成对出现,而且返回类型必须是存在的类型。大括号:定义函数的必需格式,需要成对出现。括起来的是函数定义的程序内容,是调用函数时执行的代码。4.1.2 函数表达式定义法函数表达式定义法有时也称为函数字面值或匿名函数。这是一种较为繁杂的方法,在早期的ActionScript版本中广为使用。其格式如下所示。var 函数名:Function=function(参数1:参数类型,参数2:参数类型):返回类型/函数体代码格式说明:var:定义函数名的关键字,var关键字要以小写字母开头。函数名:定义的函数名称。Function:指示定义数据类型是Function类。注意Function为数据类型,需大写字母开头。=:赋值运算符,把匿名函数赋值给定义的函数名。function:定义函数的关键字,指明定义的是函数小括号:定义函数的必需的格式,小括号内的参数和参数类型都可选。返回类型:定义函数的返回类型,可选参数。大括号:其中为函数要执行的代码。4.1.3 两种定义方法的区别和选择原则上,推荐使用使用函数语句定义法。因为这种方法更加简洁,更有助于保持严格模式和标准模式的一致性的。下面要讲解的是函数语句和函数表达式定义法之间存在的区别,具体内容如下所示。1两种方法区别2两种方法的选择在两种定义方法的选择上,一般使用函数语句定义法。函数表达式定义函数主要用于:一是适合关注运行时行为或动态行为的编程,二是用于那些使用一次后便丢弃的函数或者向原型属性附加的函数。函数表达式更多地用在动态编程或标准模式编程中。4.2 调用函数函数只是一个编好的程序块,在没有被调用之前,什么也不会发生。只有通过调用函数,函数的功能才能够实现,才能体现出函数的高效率。通过本节的学习,读者将掌握一般的函数调用方法以及嵌套和递归调用函数的方法。4.2.1 函数的一般调用对于没有参数的函数,可以直接使用该函数的名字,并后跟一个圆括号(它被称为“函数调用运算符”)来调用。下面定义一个不带参数的函数HelloAS(),并在定义之后直接调用,其代码如下。function HelloAS()trace(AS3.0世界欢迎你!);HelloAS();代码运行后的输出结果,如下所示。/输出:AS3.0世界欢迎你!4.2.2 嵌套和递归调用函数嵌套和递归调用是两种类似函数调用方式,其本质都是在调用函数时用一个函数就调用另一个函数。不同的是,嵌套调用是用一个函数去调用另一个函数,而递归调用是函数调用自身函数。1嵌套调用函数2递归调用函数4.3 函数的返回值主调函数通过函数的调用得到一个确定的值,此值被称为函数的返回值。利用函数的返回值,可以通过函数进行数据的处理、分析和转换,并能最终获取想要获得的结果。在本节我们主要学习函数返回值的获取方法和获取过程中的注意事项。4.3.1 return语句AS从函数中获取返回值,使用return语句来实现,语法格式如下:return 返回值return:函数返回值的关键字,必须的。返回值:函数中返回的数据,既可以是字符串、数值等,也可以是对象,如数组、影片简介等。下面定义一个求圆形面积的函数,并返回圆面积的值,其代码如下:function 圆面积(r:Number):Numbervar s:Number=Math.PI*r*rreturn strace(圆面积(5)4.3.2 返回值类型函数的返回类型在函数的定义中属于可选参数,如果没有选择,那么返回值的类型由return语句中返回值的数据类型来决定。下面的代码,return语句返回一个字符型数据,来验证一下返回值的类型。function 类型测试()var a:String=这是一个字符串;return a;trace(typeof(类型测试();代码运行后的输出结果,如下所示。string4.4 函数的参数函数通过参数向函数体传递数据和信息。ActionScript 3.0对函数的参数增加了一些新功能,同时也增加了一些限制。有大多数程序员都熟悉的按值或按引用传递参数这一概念,也有对很多人很陌生的arguments对象和.(rest)参数。4.4.1 传递参数的语法函数中传递的参数都位于函数格式的括号中,语法格式如下:(参数1:参数类型=默认值,参数2:参数类型=默认值)下面定义一个个性化的欢迎语句,对不同的姓名给出对应的问候。代码如下所示。function Welcome(username:String):void trace(欢迎你!+username);Welcome(张三);Welcome(小明);代码运行后的输出结果,如下所示。欢迎你!张三欢迎你!小明4.4.2 传递参数的的两种方法许多编程语言中,参数的传递基本都是两种类型:按值或者按引用传递。按值传递意味着将参数的值复制到局部变量中以便在函数内使用。按引用传递意味着将只传递对参数的引用,而不传递实际值。要了解任何一门编程语言中的函数,首先必须搞清楚的问题就是参数的传递到底是按值还是按引用来传递参数。在ActionScript 3.0 中,所有的参数均按引用传递,因为所有的值都存储为对象。基元型数据是不变的对象,按按值还是按引用的效果一样,通常可以看作是按值传递。按值传递,就是指参数被传递给函数后,被传递的变量就独立了。若在函数中改变这个变量,原变量不会发生任何的变化。4.4.3 给函数设置默认参数在ActionScript 2.0中并不支持对函数设置默认参数,此为ActionScript 3.0的新功能。要给一个函数的参数设置默认值,语法格式如下:function(参数1:参数类型=默认值,参数2:参数类型=默认值)默认参数是可选项,可以设置默认参数,也可以不设置默认参数。若设置了默认参数,则在调用函时,若果没有写明参数,系统将使用在函数定义中为该参数指定的值。4.4.4 arguments 对象和.(rest)参数ActionScript3.0中有两种函数调用时检查参数数量的方法,分别为使用arguments对象和.(rest)参数。1 1arguments arguments 对象对象在函数中,可以使用arguments 对象来访问有关传递给该函数的参数的信息。arguments 对象是一个数组,其中按顺序保存着传递给函数的所有参数。可以使用数组的访问方式来访问传入的参数。它有一个length属性记录当前传入的参数数目;还有一个属性callee提供对函数本身的引用,该引用可用于递归调用函数表达式。2.(rest).(rest)参数参数.(rest)参数是ActionScript3.0引入的新参数声明。使用该参数可指定一个自己命名的数组参数来接受任意多个以逗号分隔的参数。第5章 事件的发送和处理事件处理系统是交互式程序设计的重要基础。利用事件处理机制,可以方便的相应用户输入和系统事件。ActionScript 3.0的事件机制基于文档对象模型(DOM3),是业界标准的事件处理体系结构。使用机制不仅方便,而且符合标准。ActionScript 3.0全新的事件处理机制是ActionScript编程语言中的重大改进,对ActionScript程序设计人员来说,在使用上也更加的方便和直观。5.1 事件处理基础在本节将介绍事件和处理的基本概念,了解常见的事件处理任务。对照ActionScript编程语言中不同版本的事件处理机制的异同,明确ActionScript 3.0中事件处理机制具有良好的性能。5.1.1 事件和事件处理基础知识事件和事件处理是面向对象编程的基础。本节将介绍事件和事件处理的基础知识以及事件处理的方法和事件处理的任务。1事件和事件处理基本概念2ActionScript 3.0中的事件和事件处理3ActionScript 3.0中的事件处理任务在ActionScript 3.0编程过程中,常见的使用事件处理的任务有:编写代码以响应事件阻止代码响应事件处理事件对象处理事件流从类中调度事件 创建自定义事件类型 5.1.2 早期 ActionScript 版本中的事件处理ActionScript 1.0使用on()和onClipEvent()两个事件处理函数来处理事件。具体为:on()事件处理函数,直接放在按钮或者影片剪辑实例上。onClipEvent()处理函数,直接放在影片剪辑实例上。这种方法把代码直接夹在实例上,简单易于、方便直接,但是由于分散在各个不同的元件之上,难以管理和维护。特别是处理不是本人编写的代码,查看和找寻会浪费太多的宝贵时间。在ActionScript2.0中对事件处理进行了改进,增加了一些事件处理机制,具体为:回调函数事件:onload、oninit、onComplete等。事件侦听器:addListener()、addEventListener()。5.1.3 ActionScript 3.0中的事件处理在ActionScript 3.0引入了基于文档对象模型(DOM3)唯一的一种事件处理模式,取代了以前各版本中存在的众多的事件处理机制。在ActionScript3.0中值存在一种事件处理模型,虽然会对一些老版本的用户和一些非开发者造成一定的麻烦,但更加清晰,更加标准,更符合面向对象开发的需要。对比ActionScript 2.0,ActionScript 3.0的事件处理体系具有以下几个新特点:在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。1type属性:每个事件对象都有关联的事件类型。事件类型存储以字符串的形式存储在Event.type属性中。利用事件类型,可以区分不同类型的事件。2cancelable属性:事件的默认行为是否可以被阻止由布尔值表示,并存储在Event.cancelable属性中。此属性时一个布尔值,默认为flase。这个属性一般是和preventDefault()方法结合在一起使用的。3target属性: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()这个方法在返回的字符串中加入新的事件实例属性。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类实例或其子类的实例。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)件类型、键盘事件(Keyboard
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 商业管理 > 营销创新


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!