Flash教程之编程基础 新手也能看得懂Word格式.docx
- 文档编号:4456966
- 上传时间:2023-05-03
- 格式:DOCX
- 页数:41
- 大小:466.29KB
Flash教程之编程基础 新手也能看得懂Word格式.docx
《Flash教程之编程基础 新手也能看得懂Word格式.docx》由会员分享,可在线阅读,更多相关《Flash教程之编程基础 新手也能看得懂Word格式.docx(41页珍藏版)》请在冰点文库上搜索。
工具栏:
动作面板的工具栏给出了针对Flash代码的各种实用的按钮,这些按钮的说明如下图所示:
动作面板的工具栏及其解释
点击
按钮将弹出与语言元素列表内容一样的菜单。
按钮可以在编译之前查找代码的语法错误,这些错误会在输出窗口中显示。
可以将代码依据其结构自动缩进对齐,如果代码存在语法错误,则会提示语法错误,无法套用格式。
从
起右边的按钮,是FlashCS3新增的。
这些按钮和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*
*轮船类*
*作者:
肖刚*
*********************************/
再看本例接下来的两行代码:
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数据类型无法很好工作的其它情况。
String
String数据类型表示16位字符的序列,可能包括字母、数字和标点符号。
字符串存储为Unicode字符,使用UTF-16格式。
对字符串值的操作返回字符串的一个新的实例。
默认值
如果没有给变量赋值,变量将采用默认值。
变量默认值列表如下:
false
NaN
Object
undefined
null
未声明(与类型注释*等效)
其它所有类(包括用户定义的类)
显式类型指定:
双引号“:
”是类型(type)运算符,用于显式指定变量的数据类型,与var关键字配合使用。
它可以指定变量类型、函数返回类型或函数参数类型。
在变量声明或赋值中使用时,此运算符指定变量的类型;
在函数声明或定义中使用时,此运算符指定函数的返回类型;
在函数定义中与函数参数一起使用时,此运算符指定该参数预期的变量类型。
显式指定数据类型不仅仅是一个良好的编程习惯,以便避免运行时出现不匹配情况;
同时,对于Flash来说,脚本编辑器支持内置类和基于这些类的变量的代码提示,从而提高了编程的效率。
如果需要为指定的变量的特定对象类型提供代码提示就要严格指定变量类型,Flash根据变量的类型弹出合适的提示。
代码提示有两种:
弹出菜单提示和工具提示样式的语法提示。
弹出菜单提示如下图所示:
弹出菜单提示
由于在之前显式声明了变量today为Date(日期)类型,所以当用键盘敲入“today”然后敲入“.”时,编辑器就会自动列出Date类型的变量的所有属性和方法供我们选择。
这大大提高了编程的效率,也减少了由于记忆或者输入错误而引起的程序错误。
语法提示如下图所示:
语法提示
语法提示在使用内置类的成员函数时出现,如上图中我们使用了内置类Date的getFullYear函数时,它会提示我们这个函数的参数为空,函数的返回值为Number类型。
程序的基本结构:
继续看接下去的代码:
Number=1;
//内部代码略
这是一个for循环结构。
它的标准格式为:
for(表达式1;
表达式2;
表达式3){
内嵌语句
它的执行过程如下:
(1)求解表达式1
(2)求解表达式2,若其值为真(true),则执行内嵌语句,若为假(false),则转到第(5)步
(3)求解表达式3
(4)转回上面第
(2)步继续执行
(5)循环结束,执行for循环以后的过程
使用流程图来表示的话,for循环结构的执行如下图所示:
for循环结构
虽然表达式1到表达式3可以是任意的单条语句,但是最常用的是它们分别表示循环变量赋初始值,循环条件,循环变量增值,例如本例的代码。
通常的计算机程序总是由若干条语句组成,从执行方式上看,从第一条语句到最后一条语句完全按顺序执行,是简单的顺序结构;
若在程序执行过程当中,根据用户的输入或中间结果去执行若干不同的任务则为选择结构;
如果在程序的某处,需要根据某项条件重复地执行某项任务若干次或直到满足或不满足某条件为止,这就构成循环结构。
顺序结构、循环结构、选择结构构成了结构化程序设计的三个基本单元,而众多的基本单元构成庞大的程序。
顺序结构的流程图如下所示:
顺序结构
典型的选择结构的流程图如下所示:
典型选择结构
按顺序编写的语句即为顺序结构,所以没有结构语句,而循环结构和选择结构分别有多种语句结构,这些结构如下表所示:
结构类型
语句以及语法
循环结构
for(初始值;
条件;
增值){语句}
先赋初始值,然后判断条件,为真的情况下执行语句,然后增值,完成一次循环,接着重新判断条件,直到条件为假。
for(变量in对象){语句}
顺序遍历对象的属性或数组中的元素,并对每个属性或元素执行语句。
while(条件){语句}
当条件为真时执行语句,然后判断条件,如果为真,执行语句,重新判断条件,直到条件为假。
do{语句}while(条件);
先执行语句,然后判断条件,如果为真,继续执行语句。
选择结构
if(条件){语句}
判断条件,如果为真,则执行语句。
if(条件){语句1}
else{语句2}
判断条件,如果为真,执行语句1,否则,执行语句2。
if(条件1){语句1}
elseif(条件2){语句2}
判断条件1,如果为真,则执行语句1,否则如果条件2为真,则执行语句2。
switch(变量){
case值1:
语句1
……
case值n:
语句n
[default:
语句]
多分支选择结构。
比较变量的值,如果为值1,则执行语句1以及以后的语句,如果为值n,则执行语句n以及以后的语句。
如果只想执行某一分支的语句n,则在语句n的最后应加break;
语句。
注:
如果读者没有结构化程序设计的基础,可以参考Flash的脚本帮助,打开Flash程序,选择【帮助】|【Flash帮助】或者按F1就可以打开Flash的帮助面板。
可以在目录中寻找或者直接搜索来找到要学习的内容。
任何软件,它的帮助文件就是最好的教材。
或者读者也可以找任何一本编程基础的书籍,翻看之后即会明白。
更多的语句、关键字和指令,可以参考Flash的帮助文件,其位置如下图所示:
算术运算:
再看本例接下来的一行代码:
sum=i*(i+1)/2;
这行代码的作用是将1~i的整数数字累加的结果放在sum变量中。
它使用了多个算术运算符以及赋值运算符“=”。
事实上,可以将这上行代码用一个for循环来表达。
sum=0;
for(varj:
j<
=i;
j++){
sum=sum+j;
但这明显增加了代码的复杂度。
使用累加的公式:
则代码变简单,执行效率当然就提高了。
游戏中常常需要使得运动满足各种物理运动规律,这些规律都有公式可循,附录中给出了一些常用的数学与物理现象公式以供参考。
下表是ActionScript的算术运算符:
运算符
=
赋值运算符
?
:
条件运算符
+
相加
-
相减
*
相乘
/
相除
%
取余
++
自加1
--
自减1
()
小括号
和代数运算一样,程序中的运算符也具有优先级,程序总是先执行优先级最高的运算。
上表中,运算符的优先级正好从低到高排列(有相同优先级的,如加法“+”和减法“-”的优先级是一样的。
事实上,程序中的算计运算的优先级和中小学算术运算的优先级是一致的,所以非常好理解。
跟踪调试函数trace:
trace("
+i+"
+sum);
trace是一个跟踪调试的函数,它可以在输出窗口中一字符串的方式输出trace函数的参数,每条trace语句输出一行字符串。
trace语句可以有一个或者多个参数,参数的类型可以是任意的,事实上,它将条用参数对象的toString方法,输出对象的字符串表示方式。
本例中使用了字符串连接符“+”将多个字符串连接成一个字符串作为trace函数的参数。
运算符“+”的两边都是数字的时候表示加法运算,但是如果两边有一个是字符串,则表示字符串连接运算。
trace语句是调试程序的好帮手。
它可以输出一些运行时的信息以便检测程序执行和发现程序错误。
trace语句在发布的swf文件中不起作用,不会对最后结果造成影响。
如果想在调试过程中暂时不输出trace的结果,那么在【文件】|【发布设置】的Flash页中勾选“省略trace动作”即可。
trace输出开关
在接下来的例子中,我们还将多次使用到trace语句,用来查看程序执行的中间结果以及最后结果。
包括在游戏实例代码中也可能保留着trace语句,那是调试游戏时留下的,对最终的程序没有影响,也不必删除。
2)第二段示例代码
程序说明:
建立一个4×
6的二维数组,每个数组元素保存一个0~10的随机整数,然后输出这个数组。
新建Flash文档,输入以下代码:
//定义一维数组
varmyArray:
Array=newArray(4);
for(vari=0;
4;
//一维数组的每个元素为一个新的一维数组
myArray[i]=newArray(6);
for(varj=0;
j<
6;
j++){
//给数组元素赋随机值
myArray[i][j]=int(Math.random()*10);
}
//输出一维数组myArray[i]
trace(myArray[i]);
按Ctrl+Enter测试影片,则输出这个二维数组的值。
某次的输出如下:
3,8,7,4,0,4
0,6,0,1,1,8
6,0,6,7,5,0
1,9,8,5,6,4
这段代码包含以下的知识点:
◆数组对象以及多维数组的使用
◆嵌套循环
◆内建数学类Math的使用
◆数据类型转换
◆编译器的严谨模式与非严谨模式
现在来解释这些代码,先看第一行代码:
这里声明了一个Array类型的变量myArray,并用new关键字创建这个Array对象的实例,初始化其长度为4。
Array是一个用来表示一维数组的数据类型,它可以存储任意类型的数据或对象。
数组是游戏程序中频繁使用到的一种数据类型。
用变量名称引用数组对象,访问数组的每个元素则使用下标运算符“[]”,下标从0开始编号。
假设数组元素存储的是另一个数组,那么就构成了二维数组,以此类推。
多维数组的的访问采用多个下标运算符即可。
Array是一个复杂对象,必须用new关键字创建它的实例,否则声明的变量无法访问,因为ActionScript要通过new关键字给复杂对象在内存中开辟一个空间,存储这个对象之用。
也可以创建一个空的数组对象,或者创建数组对象的同时给数组赋值。
如下代码所示:
//创建一个空的数组
varmyArray1:
Array=newArray();
//创建一个有三个元素的数组,元素值分别为1,2,3
varmyArray2:
Array=newArray(1,2,3);
数组对象不仅仅为我们提供了存储数组的数据结构,同时还提供了一些基于数组的属性和操作函数等,例如数组的长度、给数组元素排序等等。
这里不一一举例说明,而仅以列表的方式给出数组对象Array常用的成员:
成员
length
属性,表示数组中元素数量的非负整数。
Array(numElements:
int=0)
允许创建指定元素数量的数组,默认为0。
Array(...values)
允许创建包含指定元素的数组。
concat(...args):
Array
将参数中指定的元素(组)附加到数组中,形成新的数组。
forEach(callback:
Function,thisObject:
*=null):
void
对数组中的每一项执行函数。
pop():
Object
删除数组中最后一个元素,并返回该元素的值。
push(...args):
uint
将一个或多个元素添加到数组的结尾,并返回该数组的新长度。
reverse():
倒转数组的顺序。
shift():
删除数组中第一个元素,并返回该元素。
slice(startIndex:
int=0,
endIndex:
int=16777215
):
返回由原始数组中某一范围的元素构成的新数组,而不修改原始数组。
some(callback:
Boolean
对数组中的每一项执行测试函数,直到获得返回true的项。
sort(...args):
对数组中的元素进行排序。
splice(startIndex:
int,deleteCount:
uint,
...values):
给数组添加元素以及从数组中删除元素。
unshift(...args):
将一个或多个元素添加到数组的开头,并返回该数组的新长度。
类成员的使用方法为:
变量名.成员名
如果成员为一函数,则需要加括号“()”,如果函数有参数,则放在括号里面,多个参数用逗号“,”隔开。
Array对象不仅有以上这些成员,还有一些被称为静态常数的成员。
所谓的静态成员,是指使用类名引用而不是类实例名引用的成员。
静态成员一般用于辅助此类相关的一些操作。
例如Array.NUMERIC就是一个Array类的静态属性(也称为常数),在对数进行排序的时候用来表示按数值大小的顺序排序而不是字符串编码的顺序排序。
提示:
本书中有许多的知识列表,为了节约篇幅,这些列表一般都是经过精简,剔除了游戏程序中不用或者很少使用到的项。
读者若想了解这些被精简的项,可以参考Flash帮助文件。
嵌套循环:
再看看接下来的一段代码:
myArray[i][j]=int(Math.random()*9);
这段代码的结构为嵌套的循环结构。
第一层循环给myArray数组的每一个元素赋值一个新的数组,第二层循环为myArray数组的每个元素所表示的数组的每个元素赋随机的初始值。
这段代码用流程图表示如下:
嵌套循环
上图中,内部循环结构可以看作是一个简单的表达式,它与其前一条语句组成顺序结构,而这个顺序结构又可以看作是一个简单的表达式,而成为外部循环结构的内嵌表达式。
一个完整的程序,是有着大量的顺序结构、选择结构和循环结构嵌套、组合的的复合体。
熟练使用结构化程序设计思想是编写复杂程序的基础。
Math类:
这段代码还用到了Flash内建的数学类Math的一个静态方法:
random(),它的作用是生成一个0~1之间的随机小数。
Math是Flash内嵌的数学计算辅助类,开发游戏经常要和这个类打交道。
它是一个静态类,包含一些静态函数和静态属性
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Flash教程之编程基础 新手也能看得懂 Flash 教程 编程 基础 新手 也能看
![提示](https://static.bingdoc.com/images/bang_tan.gif)