不错的Flash ActionScript教程.docx
- 文档编号:24544248
- 上传时间:2023-05-28
- 格式:DOCX
- 页数:42
- 大小:43.68KB
不错的Flash ActionScript教程.docx
《不错的Flash ActionScript教程.docx》由会员分享,可在线阅读,更多相关《不错的Flash ActionScript教程.docx(42页珍藏版)》请在冰豆网上搜索。
不错的FlashActionScript教程
不错的FlashActionScript教程
第1部分:
ActionScript基础
第1章:
代码格式及规范
代码格式
ActionScript的每行语句都以分号";"结束.不同于BASIC语言,ActionScript语句同C++,Java,Pascal一样允许分多行书写,即允许将一条很的长语句分割成两个或更多代码行,只要在结尾有个分号就行了.允许语句分行书写的唯一缺点是(至少对许多熟悉BASIC的人而言):
语句末尾不能忘记加分号.语句分行唯一的限制是字符串不能跨行,即两个分号必须在同一行.
分行书写长语句也是一个很好的排版办法,例如下面的语句段(目前你不需理解下面的语句是什么意思,在双斜杠后面是注释):
duplicateMovieClip("MyOldMovieClip",//旧的MovieClip实例名
"MyNewMovieClip",999);//新复制的实例名和所在层次
setProperty("MyNewMovieClipNameIsNewMC",//要修改其属性的MovieClip实例名
_alpha,"30");//修改其透明度为30%
但是在FlashMX中似乎自动格式化功能不是很完善.上面的代码可以运行通过,但在使用自动格式化时会出错.问题就在于插入其间的注释语句.毕竟上面我写的例子并不是很好地符合FlashMX的语法规范(但按照C语言的语法来看是绝对没问题的),所以请记住:
只有在语句很长或是很复杂的情况下才使用多行书写.
--------------------------------------------------------------------------------
一个好的程序员会懂得在程序代码中加入注释.但也许你会说:
没关系,我知道我写的是什么.但是假如你是在1个月后再读这段代码呢?
很明显,你记不住.所以多打几个字又有什么麻烦的?
给ActionScript代码加注释使用下面格式:
statements;//这是单行注释,由双斜杠开头,这行的后面部份都是注释内容
statements;/*这也是注释
只不过可以换行*/
就这么简单(却又十分有用).注意/*和*/已经不建议使用了(因为必须配对,所以经常会导致错误).
--------------------------------------------------------------------------------
除了注释,增加代码可读性的另一途径是使用代码排版格式.下面是一段具有高可读性的代码:
//计算x阶乘的函数
functionf(x){
if(x<=0){//假如x小于等于0
return1;//返回1
}else{
returnx*f(x-1);//否则返回阶乘结果
}
}
FlashMX之前版本必须由程序员自行编排代码格式,而FlashMX的Action面板多了一个AutoFormat(自动格式化)按钮,可以用它来自动格式化代码(同时也会进行语法检查,相当方便).格式化的选项可以在Action面板弹出菜单的AutoFormatOptions项对应的对话框中设置.
语法着色和代码提示
语法着色(SyntaxHightlighting)是许多编程语言的IDE(集成开发环境)所具备的功能.Flash也具有这项功能.语法着色的颜色可以在Action面板弹出菜单的Preferences...项对应的对话框中设置.
对此,没什么好详细解说的.只是希望大家能利用语法着色来发现错误和阅读代码.
FlashMX新增加的代码提示功能(CodeHints)对于熟悉VisualStudio6.0+版本的读者而言并不陌生.例如在输入了一个对象名后再输入".",就会显示相关的属性和方法列表;在输入了函数名后输入"(",就会显示相关的函数格式.具体的可在输入代码时自己体会.
语法规范
关键字
关键字是任何一种语言程序的基本构造单位.它是程序语言的保留字(ReservedWords),不能被作为其它用途(不能作为自定义的变量,函数,对象名).
Flash的ActionScript中关键字不是很多,下面的它们的列表:
FlashMXActionScript的关键字
break跳出循环体instanceof返回对象所属的类(Class)
case定义一个switch语句的条件选择语句块new使用构造函数(Constructor)创建一个新的对象
continue跳到循环体的下一项目return在函数中返回值
default定义switch语句的默认语句块switch定义一个多条件选择语句块
delete清除指定对象占用的内存资源this引用当前代码所在的对象
else定义if语句返回为假时的语句块typeof返回对象的类型
for定义一个循环var声明一个本地变量(LocalVariable)
function定义一个函数语句块void声明返回值类型不确定
if定义一个条件语句块while定义一个条件循环语句块
in在一个对象或元素数组中创建循环with定义一个对指定对象进行操作的语句块
列出这些并不是要求你像背单词一样把它们背下来(这也是为什么中国的教育质量这么差的原因),只是希望大家记住:
在Flash中有一些作为关键字的单词是不能随意使用的.这在分析错误的时候是很有用的(特别对于初学者).
大小写敏感
同C++和Java一样,ActionScript是区分大小写的.
这就意味着:
If并不等于if.假如在代码中使用了If,在运行和检查时都会产生错误.避免这种情况发生其实很简单:
多注意一下输入的代码是否自动地被语法着色了(SyntaxHightlighting).
但是对于变量(Variable),实例名(InstanceName)和帧标签(FrameLabel),ActionScript是不区分大小写的.尽管如此,我还是建议大家在书写代码时保持大小写一致.这是个很好的习惯.
运算符
除了关键字,程序语言中最重要的组成部分就是运算符.先不要说我死板,因为不了解这些东西,你什么也做不成.
下面是运算符的列表,运算符的优先级(即几个运算符出现在同一表达式中时先运算哪一个)从上到下递减:
运算符
描述
+一元(Unary)加
-一元(Unary)减
~按位(Bitwise)逻辑非
!
逻辑非(NOT)
not逻辑非(Flash4格式)
++后期(Post)递加
--后期(Post)递减
()函数调用
[]数组(Array)元素
.结构(Structure)成员
++先期(Pre)递加
--先期(Pre)递减
new创建对象
delete删除对象
typeof获得对象类型
void返回未定义值
*乘
/除
%求模(除法的余数)
+加
add字符串(String)连接(过去的&)
-减
<<按位左移
>>按位右移
>>>按位右移(无符号unsigned,以0填充)
<小于
<=小于或等于
>大于
>=大于或等于
lt小于(字符串使用)
le小于或等于(字符串使用)
gt大于(字符串使用)
ge大于或等于(字符串使用)
==等于
!
=不等于
eq等于(字符串使用)
ne不等于(字符串使用)
&按位(Bitwise)逻辑和(AND)
^按位逻辑异或(XOR)
|按位逻辑或(OR)
&&逻辑和(AND)
and逻辑和AND(Flash4)
||逻辑或OR
or逻辑或OR(Flash4)
?
:
条件
=赋值
*=/=%=
+=-=&=
|=^=<<=
>>=>>>=
复合赋值运算
多重运算
写了这么一大版(也可以说是抄了),有什么用?
你会发现这些运算符与C++和Java的运算符没什么很大的区别,无论是形式上还是功能上.作为初学者你必须记住其中比较常用的部分(不常用部分的说明文字背景较暗).这对你今后写表达式有很大帮助.
--------------------------------------------------------------------------------
对于运算符的使用,也有一些要注意的地方.
例如and和or,虽然对于效率而言与&&和||没什么至关重要的区别,但如果你过去使用过BASIC,你肯定会选择前者的表示方式;假如你过去是使用C++或是Java的,那么你就会倾向于使用后一种方法.就我个人的观点,为了使代码具有高可读性,初学者还是应该使用意思明了的and和or.
特别是像?
:
这类极其简化的运算符,初学者更难以阅读.例如下面代码:
x=5;
y=10;
z=(x<6)?
x:
y;//如果x小于6,就把x的值赋给z,否则将y的值赋给z
trace(z);//返回5
从上例开始,本教程中的所有范例代码都可以复制粘贴到新建的Flash动画的第一帧的Action里.然后通过Control菜单的TestMovie项或是按下组合键CTRL+ENTER运行它.这样你就可以看看这些代码有什么实际效果了.当然你也可以试着改动这些代码,通过改动的效果来理解教学的内容.
就不如下面的代码易于理解(尽管很冗繁):
x=5;
y=10;
if(x<6){//如果x小于6,就把x的值赋给z,否则将y的值赋给z
z=x;
}else{
z=y;
}
trace(z);//返回5
常量
常量是在程序运行中不会改变的量.
例如数值1,2,3...,逻辑值true,false等等.另外还有一些系统内建的常量,具体的可以看帮助文件的内容.
表达式
在ActionScript中最常见的语句就是表达式,它通常由变量名,运算符及常量组成.下面是一个简单的表达式:
x=0;
左边是变量名(x),中间是运算符(赋值运算符"="),右边是常量(数值0).这就是一个非常简单的赋值表达式.由这个表达式我们可以声明(Declare)一个变量,为下一步操作做准备.
表达式又分为赋值表达式,算术表达式和逻辑表达式.
赋值表达式上面已经说明了,就是给变量一个值.算术表达式顾名思义就是做数学运算的表达式,例如:
1+3(返回值为数值4).逻辑表达式就是做逻辑运算的表达式,例如:
1>3.只不过逻辑表达式返回的是逻辑值而已.前面的1>3返回值为false,即1大于3为假.
将多个表达式组合在一起就可以组成复合表达式,一般我们用到的也是这种表达式.例如:
t=3*3+(2+3);
x=1>3;
上面的第二行是一个逻辑-赋值复合表达式.首先Flash计算逻辑表达式1>3的值(false),然后将该值赋给x(即x=false;).对于复合表达式的运算顺序可以参考上面的运算符表.要改变运算顺序可以使用圆括号(例子的第一行),这是同其它语言一致的.
这一章就到此为止.在下一章中,我们将详细讨论Flash中的数据类型及变量的使用.
--------------------------------------------------------------------------------
第2章:
变量及数据类型
变量
定义变量
变量是什么?
大概说来就是存放信息的容器(更确切的说是指向内存空间中某个存贮位置的指针,不过能够理解就行了,何必去记这么抽象的定义).只要能够理解它可以存放信息并可以通过各种途径改变其中的信息就可以了,我又不是大学里面的老师,整天就知道叫学生死记硬背定义,实际的东西一点都没有,"一切为了考试".
还有一个概念:
什么叫初始化变量?
就是在定义时给它一个有效值以说明它的内容和数据类型.就像下面的例子,定义了一个字符串(String)变量:
MyString="我不懂什么是初始化变量";
就这么简单,但是也有要注意的问题:
变量名必须为有效的标识符(例如不能以数字和不允许使用的字符开头).
变量名不能与ActionScript关键字和常量相似或相同.
变量名在它的作用域(Scope)中必须是唯一的(在下面我们会提到什么是作用域).
变量作用域
也就是变量在什么范围内是可以访问的.就好像在C&C:
Renegade中的任务一样,没有SecurityLevel3的IDCard就进不了安全级别为3的区域的.
作用域一般说来有三种:
时间线(Timeline),局部(Local),全局(Global).
--------------------------------------------------------------------------------
对于时间线范围的变量,就像上面的例子一样用=赋值并声明,当然你也可以用set动作(Flash4,不推荐使用的方法,除非你觉得代码不够长):
set(MyString,"我不懂什么是初始化变量");
时间线范围变量声明后,在声明它的整个层级(Level)的时间线内它是可访问的.
--------------------------------------------------------------------------------
什么是局部变量?
我也常常问自己.局部变量就是在声明它的语句块内(例如一个函数体)是可访问的变量,通常是为避免冲突和节省内存占用而使用.
声明它可以使用var关键字:
functionLocalVar(){
varMyLocalString="这是一个局部字符串变量";
trace("Inside:
"+MyLocalString);
}
LocalVar();
trace("Outside:
"+MyLocalString);
上面的MyLocalString字符串变量在函数尾就会被自动清除出内存.所以在外面的trace语句返回结果为空("Outside:
"),而函数体内的trace返回:
"Inside:
这是一个局部字符串变量".
假如你删除了var关键字,那么MyLocalString就成时间线范围的变量了.运行后显示Inside和Outside都为"这是一个局部字符串变量".在后面的函数一章我们还会提到局部变量的内容.
也许你注意到了函数中有一个trace动作.它可以在测试模式(TestingMovie,CTRL+ENTER组合键)下把指定变量的值发送到输出窗口(OutputWindow),以便在运行时检查处理变量的代码是否正常.这是一个非常方便的检查方法,在测试代码时经常使用.
在代码中如果遇到有不清楚的函数和关键字,可以通过Action面板的参考按钮(Reference)打开参考面板显示光标所在位置关键字或内建函数以及对象的详细信息,也可以通过组合键SHIFT+F1打开它
--------------------------------------------------------------------------------
全局变量,顾名思义就是在整个Movie中都可以访问的变量.它的声明比较特殊:
_global.MyGlobalString="这是一个全局字符串变量";
声明使用了一个_global标识符和点语法(DotSyntax,将在后面的章节讨论)._global标识符是在Flash6中新增加的,用于创建全局变量,函数,对象和类(Class,不清楚类是什么的话可以看看C++的书).
总的来说_global是一个与最底层_level0并列的对象.所有的全局变量,函数,对象其实就相当于是它的属性,方法,子对象.关于它的具体内容可以查阅帮助文件,一般我们只要懂得用就行了.
全局变量不会被同名的时间线变量和局部变量屏蔽(Obscured),也就是说,它在Movie内的任何地方都是可访问的,并且优先于时间线变量和局部变量访问.
在代码中使用变量
使用变量很简单,有点编程基础的读者都可以办到.下面用一个例子来说明在ActionScript中变量的使用:
functionvars(x){
if(x<5){//如果x小于1
x=x+1;//x加1
}else{
x=10;//否则赋值10
}
trace("x="+x);
returnx;
}
vars
(2);
vars(6);
trace("x="+x);//测试x是否为局部变量
函数声明中的参数无需加var声明也自动作为局部变量(例如上面例子中的x).通过上面例子的最后一句就可以看出来(返回值为空).
我们可以看到,上面定义的函数中对局部变量x(在函数参数中声明)进行了4种操作:
赋值:
就是改变变量所存贮的内容.
运算:
使用运算符运算并返回结果.上例中的x=x+1可视为一个运算操作(x+1)和一个赋值操作(x=...)的复合语句.对于逻辑运算(上面if语句的条件),返回的为逻辑值true或false(就像x<5在x为4时会返回true).
函数及命令调用:
就如上面trace("x="+x);中的一样,x是被作为参数传递给函数的,它代表的是它所存贮的实际内容(在returnx;中也一样).
在ActionScript中变量的使用具有很大的灵活性,下面我们将会针对不同的数据类型进行讲解.
常见数据类型
字符串|String
一个字符串就是一系列的字符,例如"This"就是一个字符串.
定义一个字符串变量很简单,只要在初始化时将一个字符串数据赋给它就行了:
chapter="第2章";
section="第2节";
section_name="常见数据类型";
full_name=section+""addsection_name+999;//连接字符串
if(typeof(full_name)ne"string"){
full_name="类型错误!
";
}
trace("full_name="+full_name);
上面的第4行的full_name的值是前面两个变量(section和section_name)和一个常量(999)的运算结果(使用了+和add运算符,它们的功能是相同的).请注意,这行代码最后面的数值常量999不是同一类型的数据,如果在Pascal这种数据类型检查极其严格的语言中这行代码是错误的.但是ActionScript可以自动将它转换为字符串格式,而不需要专门的函数(当然,最安全的方法是使用Number对象的toString()函数或是String()函数).由此可见,ActionScript是一种弱类型检查的语言(即不严格限制各种数据类型间的运算和传递),这和VB倒是有点相似,只不过更过分一点.
在后面我用了一个if语句来测试后面加上999的代码是否运行正常(即检查表达式返回的值是否为字符串,尽管在实际中并没有这个必要).注意我用的是字符串类型专用的逻辑运算符ne,当然这只是为了表现字符串数据类型的特殊性,实际应用中用!
=也就可以了.对于typeof操作符,我们会在这一章的末尾详细讲解.
--------------------------------------------------------------------------------
在实际应用中,有一些特殊的字符不能直接输入在字符串中,例如不能在字符串中直接输入引号(会破坏字符串的完整性).这时我们就需要用到转义字符了(Escaping).要使用转义字符,首先要输入一个反斜杠(\),然后输入相应的代码.详细的代码列表如下:
转义字符代表字符
\b退格字符(ASCII8)
\f换页符(ASCII12)
\n换行符(ASCII10)
\r回车符(ASCII13)
\t制表符(ASCII9)
\"双引号字符
\''单引号字符
\\反斜杠字符
\000-\377八进制表示的字符
\x00-\xFF十六进制表示的字符
\u0000-\uFFFF十六进制表示的16位Unicode字符
例如:
trace("Hesaid:
\"Idon\''tcareaboutyou.\"\nAndshesmiled:
\"Really?
\"");
你可以根据上面的对照列表读出上面代码的字符串内的实际内容.运行后的输出为:
Hesaid:
"Idon''tcareaboutyou."
Andshesmiled:
"Really?
"
可以看到,转义字符都被转换为相应的实际字符了.这就是转义字符的作用,学过C++的读者应该很熟悉了.
数值|Number
ActionScript中的数值型数据为双精度浮点数(不懂是什么意思也没关系,反正知道是数值就行了,那只不过是个范围限制).
对数值型数据可以进行任何相应操作.如下例:
a=1;
b=2;
sum=a+b;//求a,b之和
if(sum>0){//假如结果大于0
square_root=Math.sqrt(sum);//使用Math对象的平方根函数求sum的平方根
}
trace("sum="+sum);
trace("square_root="+square_root);
完.
逻辑变量|Boolean
逻辑变量又被称为布尔变量(由其英文名称而来).它只有两个值:
true和false.在必要的情况下,ActionScript会自动将它的值转换为1和0,你也可以用1和0给它赋值(这是可能是为了和WindowsAPI函数调用兼容而产生的).
a=10;
b1=1;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 不错的Flash ActionScript教程 不错 Flash ActionScript 教程
![提示](https://static.bdocx.com/images/bang_tan.gif)