第二章 Flash编程基础.docx
《第二章 Flash编程基础.docx》由会员分享,可在线阅读,更多相关《第二章 Flash编程基础.docx(36页珍藏版)》请在冰豆网上搜索。
![第二章 Flash编程基础.docx](https://file1.bdocx.com/fileroot1/2022-11/15/e6efa6de-65b3-4a7a-b796-a629e145dab8/e6efa6de-65b3-4a7a-b796-a629e145dab81.gif)
第二章Flash编程基础
第二章Flash编程基础
教学提要
ActionScript代码的输入与编辑
语法与结构
错误与调试
重点与难点
重点是语法与结构,视课堂讲授的进度安排教学内容。
由于安排的内容较多,若课堂上无法全部完成,则改为回去自学。
教学内容:
一、ActionScript代码的输入与编辑
Flash是一个集美工、动画与编程于一体的集成开发环境,故而其编程方式与其它纯程序开发的编程方式有所不同。
Flash自诞生之日起,就是以美工、动画为主,以程序为辅的应用框架。
我们可以理解为,Flash的总体结构就是一个影片剪辑(MovieClip),而几乎所有的多媒体内容都是挂在这个影片剪辑中的某个分支之上,包括脚本(代码),形成一个树形结构。
自ActionScript3.0起,这个框架被规范化为显示对象层次结构。
一个典型的Flash作品的结构如下图所示:
典型的Flash作品的结构
这种以动画为主,代码为辅的程序框架的好处是显而易见的,因为游戏开发的许多工作与画面设计打交道,我们利用对象层次结构,在直观的环境下创作几乎整个游戏!
脚本的从属地位的好处显而易见,而其坏处也越来越被人们认识,就是对于其他程序开发人员来说,Flash的脚本有些莫名其妙,要想开发Flash程序,就必须先了解Flash的显示对象层次结构,动画,时间轴等原本与编程无多大联系的知识。
目前,Flash界面设计与代码设计的分离成了趋势,例如通过flex等提供一个完全适合程序员的开发环境。
由于游戏类型的应用,界面与程序结合非常紧密,所以还是采用原有的框架,在单独的Flash开发环境中完成所有的工作。
虽然Actionscript代码可以被挂在Flash中的许多分支上,但查看和编辑脚本却十分方便,因为所有的代码都在动作面板(脚本编辑器)中输入和编辑,只要用鼠标点击相应的位置或者对象,就会显示这个位置或对象所有用的代码。
打开一个Flash文档,按F9键,或者点击【窗口】|【动作】命令,即可打开动作面板。
动作面板如下图所示:
动作面板
由于接下来要经常和动作面板打交道,所以这里对动作面板进行较为详细的介绍。
脚本版本选择:
点击下拉按钮弹出ActionScript版本列表,选择其中的一个,则语言元素列表的内容会作相应的变化。
需要注意的是这里修改的是语言元素列表的显示内容,但本文档的ActionScript版本并不因此而被修改。
ActionScript版本选择
语言元素列表:
这是一个树型结构的目录,它列出了当前版本的语言元素、包以及索引。
其中每个包里面有一个或多个类,每个类的属性、方法和事件也都列在树型结构中。
如下图所示:
语言元素列表
双击其中的一个条目,就可以在代码窗口添加一行相应的代码,然后用脚本助手或者直接手动进行必要的修改。
当前代码位置:
当前代码位置指出脚本编辑器中的代码位于Flash文档的何处。
典型的代码放置位置是主时间轴的帧上或者是影片剪辑中的帧上。
如果是AS2或更早版本,代码也可能是直接依附在影片剪辑或者按钮上。
做法是单击一个剪辑或者按钮,然后打开动作面板,输入或者编辑其上的代码。
相信有过Flash8或以前版本使用经验的读者对按钮上的on函数再熟悉不过了。
工具栏:
动作面板的工具栏给出了针对Flash代码的各种实用的按钮,这些按钮的说明如下图所示:
动作面板的工具栏及其解释
点击
按钮将弹出与语言元素列表内容一样的菜单。
点击
按钮可以在编译之前查找代码的语法错误,这些错误会在输出窗口中显示。
点击
可以将代码依据其结构自动缩进对齐,如果代码存在语法错误,则会提示语法错误,无法套用格式。
从
起右边的按钮,是FlashCS6新增的。
这些按钮和VisualStudio.NET的相关工具类似,估计是汲取其优点而添加的。
脚本助手:
脚本助手开启时,会在动作面板的上部显示当前行代码的结构信息,提供详细的辅助信息。
如图所示,点击for循环语句首行时脚本助手显示的信息:
脚本助手
开启脚本助手时无法自由修改脚本代码,而且挤占了动作面板许多空间,所以它只适合初学者在不清楚程序结构或者担心引入语法错误的情况下使用。
当读者对ActionScript的语法与结构具有一定的了解之后,应该取消脚本助手,而在代码窗口中自由地编辑代码。
二、语法与结构
本章节讲解ActionScript的语法与结构,但并不按教科书的方式详细讲解。
而是完全将FlashCS3看作是一种面向对象的编程开发环境,以最简练的代码讲解ActionScript的语法与结构。
从简练的代码中引申出来的各种编程概念和知识面,则以列表的方式平铺。
这种方法可以使大家利用以前所学的其它语言的编程知识,快速过渡到ActionScript编程上来。
1)第一段示例代码
打开FlashCS3Professional,选择【文件】|【新建】,或者按Ctrl+N,弹出新建文档对话框。
选择“Flash文档(ActionScript3.0)”,按确定新建一个Flash文档。
点击“图层1”的第1帧,按【F9】弹出动作面板,输入以下代码:
//这是我第一次写ActionScript脚本
varsum:
Number;
varcount:
Number=5;
sum=0;
for(vari:
Number=1;i<=count;i++){
sum=i*(i+1)/2;
trace("1累加到"+i+"的值为:
"+sum);
}
如下图所示:
第一个脚本
注意:
下文若提到“输入以下代码”时,就是在新建文档的图层1的第1帧的动作面板中输入下框中的代码。
在调试程序前保存文件是一个良好的习惯,因为谁也不能肯定刚刚编写的脚本不会在调试过程中造成死机,若调试过程中出现死机或者意外退出Flash程序,那么没有保存的内容将会丢失。
按Ctrl+S保存文件,然后选择【控制】|【测试影片】,或者按Ctrl+Enter测试影片。
这时会弹出两个窗口,一个是Flash作品的窗口,因为刚才没有建立任何可见的元素,所以这个窗口是空白的。
还有一个是输出窗口,当有trace输出语句或者出现语法错误的时候就会自动弹出输出窗口。
本段程序测试时输出窗口如下图所示:
本程序的输出
这段代码包含以下知识点:
◆代码注释的语法
◆变量声明与赋值的方法
◆数据类型与默认值
◆显式类型指定及其意义
◆程序结构语句
◆基本数学运算
◆trace语句介绍
现在让我们一行行地认识这些代码:
//这是我第一次写脚本
这是一行代码注释,编译器将忽略这行文字。
注释提高了代码的可读性。
单行注释由“//”开始,在代码中呈灰色。
如果需要多行注释,则使用“/*”开始,用“*/”结束。
一个典型的多行注释如下所示:
/********************************
*Boat.as*
*轮船类*
*作者:
肖刚*
*********************************/
再看本例接下来的两行代码:
varsum:
Number;
varcount:
Number=5;
这两行代码声明两个数值类型的变量sum和count。
var是声明变量的关键字,sum与count是变量名称。
Number指出变量数据类型为数值。
第二行代码声明变量count的同时赋值一个初始值5。
对于面向对象的程序设计语言来说,所有的数据类型都是对象,都是类。
Flash的内置类可以分为两种,一种是基元类型,也被成为原始类型,它们一般用来存储一些简单的数据,有的原始类型还具有一些针对所存储的数据的属性和方法。
原始类型是构建复杂类的基本元素。
另一种是复杂类,它们是由class关键字定义的类,可以认为是程序的构件,一般具有成套的属性、方法和事件。
原始类型的变量直接存储数据,而复杂类型的变量存储的是类的引用。
更多的关于类与对象的介绍,请参看“Flash的内置类”以及“面向对象程序设计”章节。
下表列出了ActionScript常用的原始类型,以及其简要的说明,它们的用法都是大同小异的:
数据类型
说明
Boolean
Boolean数据类型包括两个值:
true和false。
对于此类变量,其它任何值都是无效的。
已经声明但尚未初始化的布尔变量的默认值是false。
Number
此数据类型可以表示整数、无符号整数和浮点数。
若要存储浮点数,数字中应该包括一个小数点。
若没有小数点,数字将被存储为整数。
int
存储32位有符号整形数据。
使用int类型有助于利用CPU快速处理整形运算的能力。
(仅适用于ActionScript3.0)
uint
存储32位无符号整数的数据。
uint类主要用于像素颜色值(ARGB和RGBA)和int数据类型无法很好工作的其它情况。
(仅适用于ActionScript3.0)
String
String数据类型表示16位字符的序列,可能包括字母、数字和标点符号。
字符串存储为Unicode字符,使用UTF-16格式。
对字符串值的操作返回字符串的一个新的实例。
默认值
如果没有给变量赋值,变量将采用默认值。
变量默认值列表如下:
数据类型
默认值
Boolean
false
int
0
Number
NaN
Object
undefined
String
null
uint
0
未声明(与类型注释*等效)
undefined
其它所有类(包括用户定义的类)
undefined
显式类型指定:
双引号“:
”是类型(type)运算符,用于显式指定变量的数据类型,与var关键字配合使用。
它可以指定变量类型、函数返回类型或函数参数类型。
在变量声明或赋值中使用时,此运算符指定变量的类型;在函数声明或定义中使用时,此运算符指定函数的返回类型;在函数定义中与函数参数一起使用时,此运算符指定该参数预期的变量类型。
显式指定数据类型不仅仅是一个良好的编程习惯,以便避免运行时出现不匹配情况;同时,对于Flash来说,脚本编辑器支持内置类和基于这些类的变量的代码提示,从而提高了编程的效率。
如果需要为指定的变量的特定对象类型提供代码提示就要严格指定变量类型,Flash根据变量的类型弹出合适的提示。
代码提示有两种:
弹出菜单提示和工具提示样式的语法提示。
弹出菜单提示如下图所示:
弹出菜单提示
由于在之前显式声明了变量today为Date(日期)类型,所以当用键盘敲入“today”然后敲入“.”时,编辑器就会自动列出Date类型的变量的所有属性和方法供我们选择。
这大大提高了编程的效率,也减少了由于记忆或者输入错误而引起的程序错误。
语法提示如下图所示:
语法提示
语法提示在使用内置类的成员函数时出现,如上图中我们使用了内置类Date的getFullYear函数时,它会提示我们这个函数的参数为空,函数的返回值为Number类型。
程序的基本结构:
继续看接下去的代码:
for(vari:
Number=1;i<=count;i++){
//内部代码略
这是一个for循环结构。
它的标准格式为:
for(表达式1;表达式2;表达式3){
内嵌语句
}
它的执行过程如下:
(1)求解表达式1
(2)求解表达式2,若其值为真(true),则执行内嵌语句,若为假(false),则转到第(5)步
(3)求解表达式3
(4)转回上面第
(2)步继续执行
(5)循环结束,执行for循环以后的过程
使用流程图来表示的话,for循环结构的执行如下图所示:
for循环结构
虽然表达式1到表达式3可以是任意的单条语句,但是最常用的是它们分别