Flash动画及课件开发.docx
- 文档编号:23556701
- 上传时间:2023-05-18
- 格式:DOCX
- 页数:93
- 大小:859.34KB
Flash动画及课件开发.docx
《Flash动画及课件开发.docx》由会员分享,可在线阅读,更多相关《Flash动画及课件开发.docx(93页珍藏版)》请在冰豆网上搜索。
Flash动画及课件开发
第5章ActionScript编程
本章要点:
●介绍ActionScript编程基础。
●掌握ActionScript的基本操作方法。
●初步学习ActionScript程序流程的控制。
●怎样为对象赋予Action。
●掌握ActionScript对键盘与鼠标的控制。
●掌握ActionScript对影片实例的控制。
●掌握ActionScript对声音的控制。
5.1关于ActionScript
5.1.1ActionScript是什么
ActionScript是一种编程语言。
ActionScript是世界上著名的媒体软件开发商Macromedia公司开发的Flash编程语言。
我们所知道的计算机语言实在是太多了,什么BASIC、PASCAL、C……,为什么又产生了一个ActionScript?
大家知道,我们使用的交通工具也是太多了:
汽车、轮船、飞机……,人们又研制了汽垫车、飞翼船、航天飞机……,明天还有更多的交通工具要产生。
无论我们拥有多少交通工具,也一定会欢迎新的交通工具的到来!
ActionScript究竟是什么意思?
ActionScript的意思非常简单明确:
Action的意思是“动作”,Script的意思是“描述”,两个单词复合到一起就是“动作描述”。
简而言之,ActionScript就是一种动作描述语言。
ActionScript描述的是什么呢——描述的是对象。
5.1.2面向对象编程
1.面向对象编程的概念
目前,我们的程序设计一般根据程序设计方式大致可以归纳为两大类:
程序化程序设计(ProceduraProgramming)与面向对象程序设计(Object-orientedProgramming)。
程序化程序设计的关键在于“程序化”,一般是针对所要解决的问题,列出解决第一个问题的程序方案、解决第二个问题的程序方案、解决第三个问题的程序方案……,以此类推。
像这样的程序化设计语言很多,例如:
BASIC、PASCAL、C、FORTRAN等。
图5-1对象
面向对象编程的关键在于“面向对象”。
对程序设计而言,什么是对象呢?
这个概念一定要弄明白。
其实,从英文含义来讲,Object既可以翻译成“对象”,也可以翻译成“物体”、“目标”。
生活中,我们面对的汽车、飞机、小动物、一本书、一只笔等都是对象。
在FlashMX中,一切图形图像、声音、文字、按钮、时间轴上的帧格等也都是对象,如图5-1所示。
2.对象的类别
在Flash中,ActionScript的对象究竟有哪些类别呢?
ActionScript的对象共分成四大类:
●Core(核心对象):
这些对象是常用的对象,包括逻辑对象(Boolean)、数组对象(Array)、日期对象(Date)、字符串对象(String)、数学对象(Math)等。
●Movie(电影对象):
实际指Flash中的动画剪辑对象(MovieClip)、颜色对象(Color)、按键对象(Key)、鼠标对象(Mouse)、舞台对象(Stage)、文本域对象(TextField)和文本格式对象(TextFormat)。
●Client/Server(客户机/服务器对象):
有关在客户机和服务器之间建立连接对象、同步数据对象等。
●Authoring(编辑对象):
指自定义动作对象和即时预览对象。
3.对象的属性与方法
我们知道,汽车是交通工具,靠轮子在公路上行驶。
汽车有它的属性:
汽车的颜色、汽车的品牌、汽车的型号、汽车的马力、汽车的速度……;汽车有它的操作方法:
加速、减速、倒车、转弯、开前灯、关尾灯……。
当我们面向对象编程时,那些对象可以被程序指令控制在屏幕上显示、运动。
对象有它的属性(Properties):
位置、宽度、高度、透明度……;对象也有它的控制方法(Method):
对于程序中一小段一小段语句,都是控制对象的运动、属性改变、显示与否……。
不同的对象,有不同的属性。
一个对象,可以有多种属性。
电影剪辑对象有电影剪辑的属性,例如:
电影剪辑的位置、电影剪辑的高度、电影剪辑的URL地址……。
数学对象有数学对象的属性,例如:
自然对数的底数E、圆周与直径的比值PI、以e为底数的自然对数LN……。
在后面内容里,笔者会针对不同对象的控制,解释不同的属性。
5.1.3ActionScript与其他编程语言的差异
说来说去,究竟ActionScript编程语言来自哪里?
它与其他语言有什么不同?
学过JavaScript语言的人认为ActionScript很像JavaScript语言;学过C语言的人认为ActionScript很像C语言……。
其实,严格地讲ActionScript编程语言是由多种语言整合出来的一种语言。
ActionScript编程语言既吸收了许多语言的特点,甚至于与某些语言有联系,但它们之间的区别是显而易见的。
以JavaScript为例,ActionScript采用了和JavaScript一样的ECMA-262(theEuropeanComputersManuracturersAssociation)语法标准,使我们看起来二者很相似。
例如,ActionScript与JavaScript的区别和联系有:
ActionScript不支持浏览器相关的对象,如Document、Anchor、Windows……
ActionScript不支持全部的JavaScript的预定义对象。
ActionScript不支持JavaScript的函数构造。
ActionScript只能用eval语句来处理变量,从而直接得到变量的值。
在JavaScript中,如果把一个没有定义的变量转换成字符串String类型,会得到一个未定义的变量,在ActionScript中则返回一空字符串。
ActionScript不支持Unicode编码。
……
5.2ActionScript编程基础
在使用ActionScript编程之前时,我们必须先对它的语法基础进行了解。
5.2.1ActionScript语法基础
1.常用名词
动作(Action):
也称为指令。
目的在于说明当程序执行时要做些什么事。
例如,gotoAndStop动作就可以将播放磁头跳转到指定的某一帧或帧标记并停止播放。
对象(Object):
是ActionScript描述的目的物,是属性的集合。
在Flash中,所有图形图像、声音、文字、视频等都可以视为对象。
ActionScript编程过程中要控制的每个对象都具有自己的名称和值。
属性(Properties):
反映对象的性质、特征、变化。
例如,_xmouse返回鼠标的x坐标位置。
事件(Events):
在影片播放过程中发生的动作或某些条件满足时的交互响应。
例如,当影片载入时、当播放磁头到达某一帧时、当用户单击按钮或影片实例时、当用户敲击键盘上的某一键时……,都可以称产生了某一事件。
实例(Instances):
也称为实体、替身等。
实例是从符号库(也称素材库)中的元件引入到舞台上对象。
参数(Arguments):
是用于装载值的代码,在函数中将参数当成具体的值来执行。
例如:
Funtionshow(name,score){
showMC.display=name;
showMC.score=score;
}
这里,括号中的name、score都是参数(也是变量)。
常量(Constants):
常量即不会改变的量,它对于值的比较非常有用。
变量(Variables):
顾名思义,变量是可以改变的量。
变量可以创建、修改和更新。
更通俗地讲,你可以想象变量是一个个装着数值或数据的盒子,每个盒子都必须有它自己的名称(变量名),必须使用变量名称来存取这个变量。
例如,我们设定var01为一个变量盒子,这个变量盒子中装有一个字符串“Howareyou?
”,我们这样定义变量var01:
var01="Howareyou?
";
我们再将这个变量盒子中装有的数据赋给另一个变量盒子var02:
var02=var01;
现在,变量var02的值也是字符串“Howareyou?
”了。
将这两个指令合起来,就是一段程序:
var01=“Howareyou?
”;
var02=var01;
每个变量都有它自己的生命周期或说有效范围(Scope),在有效范围中你可以存取和使用该变量,出了有效范围就找不到该变量了(或说该变量的生命已经结束)。
函数(Functions):
函数简单地说就是代码块。
将实现某一种能执行特定功能的代码放在一起用一种特殊的方式定义、封装,最后命名这一段代码为函数。
函数可以在程序中重复地使用,这样就大大减少了代码量,增加了效率,同时也减少了因为代码的书写引起的错误。
同时,通过传递参数的办法,可以让函数处理各个不同的数值,从而返回不同的值。
例如:
getProperty函数就可以使用电影剪辑的实例名称和属性名称,返回对象的属性值;getVersion函数可以返回当前播放电影的Flash播放器的版本号。
关键字(Keywords):
ActionScript语言保留了一些单词作为特殊用途,你不能将这些关键词作为变量、函数或标签的名字作用它们。
下面是ActionScript的关键字。
表5-1ActionScript的关键字
Break
Case
Continue
Default
delete
else
true
void
false
while
for
function
in
if
var
with
return
new
this
typeof
表达式(Expressions):
表达式是Flash可以取得和返回值的任何语句。
用户可以合并运算符和值、调用函数等方法创建表达式。
如果在动作面板的普通模式下编写表达式,则请用户确认已经选中了表达式(Expressions)复选框,否则在参数框中包含的就只是文本字符串,如图5-2所示。
图5-2表达式复选框
2.常用语法符号
ActionScript有自己的语法符号,认识常用语法符号可以很方便地了解ActionScript编程规则。
表5-2常用语法符号
符号
名称
说明
.
点
功能:
指向一个对象(通常是对MovieClip)的某一个属性或方法。
例:
如果有一个影片实例的名称是“fish”,_x和_y表示这个实例在场景中的x坐标和y坐标,就可以用如下语句得到它的x位置和y位置。
_root.x=_root.fish._x;
_root.y=_root.fish._y;
其中:
“_root.”表示主时间轴的绝对路径。
“_parent.”表示父场景(即上一级场景)的相对路径。
{}
大括号
功能:
用“{}”把程序分成一块一块的模块。
可以把括弧中的代码看作是一句表达。
例:
if(count>18){
count=1;
}
在上面程序中,大括号内{}的“count=1;”就是一句表达。
;
分号
功能:
ActionScript以分号作为语句的结束。
例:
下面各语句就是以分号结束的。
itncock_W=_xscale;
itncock_H=_yscale;
当然,如果用户忽略了分号,FlashMX也能正确编译脚本。
只是最佳做法还是应该使用分号。
逗号
功能:
ActionScript以逗号表示一种分隔符号。
例:
上面关于分号的示例语句也可以用逗号分隔后写在同一行。
itncock_W=_xscale,itncock_H=_yscale;
()
圆括号
功能:
“()”来放置参数。
如果括弧里面是空的,就表示没有任何参数传递。
例:
程序片段
on(press){
startDrag(stars,true);
}
说明当按钮按下去时,影片实例可以被鼠标拖动。
这里括号()中“stars”、“true”都是参数。
又例:
程序片段
on(press){
_root.dh.stop();
_root.pd.stop();
}
中stop后的空括号()表示没有任何参数。
//
批注
功能:
给脚本添加批注信息,可以使代码更容易阅读。
凡是批注符号之后的内容,FlashMX在播放时并不执行。
例:
下面的语句后面就有批注,说明该语句的动作含义。
cock.stop();//主时间轴上电影剪辑cock停止运动
5.2.2ActionScript的数据类型
数据类型描述了一个变量或者一个元素能够存放什么类型的数据信息。
FlashMX的数据类型分为基本数据类型和指示数据类型。
基本数据类型包括:
字符串(String)、数字(Number)、和布尔(Boolean)。
指示数据类型包括:
对象(Object)和影片剪辑(MC)。
其中基本数据类型是实实在在地能够被赋予一个不变的数值;而数值数据类型则是一些指针的集合,由它们指向真正地变量。
下面介绍FlashMX中的数据类型。
1.字符串(String)类型
字符串,顾名思义,就是字符的序列,数字、字母、符号……排列起来就成了字符串。
在FlashMX中,字符串是用双引号封闭的。
也就是说把一些字符用双引号引起来就构成了一个这样,Mystring就成了一个字符串变量,它的值就是引号里面的字符串。
值得一提的是,可以用“+”(相当于add运算符)把两个或者多个字符串连在一起,例如:
Mystring="thisis"+"thesamplestring"+"!
"
这样的效果和第一次生成的字符串是一样的。
Mystring的值还是“thisisthesamplestring!
”
需要注意的是,在FlashMX中虽然不区分大小写,但是字符串中内容的大小写是会被区分的,如“GoodBye”和“goodbye”这两个字符串是不一样的。
这里要特别介绍一类特殊的字符——转意字符。
这些字符已经失去了字符原来的意义,它们的出现是代表了一定的功能。
举个例子说:
如果在一个字符串中键入“\r”,那么这两个字符不会被显示出来,但是从它开始的地方起,整个字符串会被分成两行,而“\r”的意义就是回车。
可以看看下面的例子:
TestString="thisisthetest"+"\r"+"string"
显示结果是这样的:
thisisthetest
string
在这里,“\r”字符串相当于是一个回车。
表5-3列出了类似这样的符号。
表5-3转意符号
转意符号
操作
\b
退格
\f
制表符
\n
换行符
\r
回车符
\t
Tab键
\"
双引号
\'
单引号
\\
斜框杠
2.数字(Number)类型
数字类型是很常见的类型,其中包含的都是数字。
在FlashMX中,所有的数字类型都是双精度浮点类。
可以用数学运算来得到或者修改这个类型的变量,比如说+、-、*、/、%等。
FlashMX提供了一个数学函数库,其中有很多很有用的数学函数。
它们都放在Math这个Object里面,可以调用。
如:
result=Math.sqrt(100);
在这里调用的是一个求平方根的函数,先求出100的平方根,然后赋值给result这个变量,这样result就是一个数字变量了。
关于Math的其他函数将在后面的相应章节中介绍。
3.布尔(Boolean)类型
和其他编程语言一样FlashMX中的布尔类型也只有两个值,一个是true(真),一个是false(假)。
在FlashMX中,如果需要也可把它们自动转换成1或者0来表示。
这种类型多用于If语句中,用来控制程序流程:
onClipEvent(enterFrame){
if((name==true)&&(pass==true)){
gotoandplay
(2);
}
}
布尔类型一般都在关系表达式或者逻辑表达式中使用到,其中的判断规则和一般的高级语言相似。
4.对象(Object)类型
对象是属性的集合,每一个属性都有自己的名字和值。
这些值可以是任何的数据类型,甚至是对象类型。
这样就可以嵌套使用对象类型,也就是说一个对象可以有一个或者多个属性是对象类型。
一般可以使用“.”语法来得到属性的值或者调用对象的方法,也还可以使用“[]”运算符调用对象的属性和方法。
请看如下代码:
Tom.workstatus.athome=true;
在上面的代码中,athome是workstatus的属性,而workstatus又是Tom的属性。
上面这个例子通过“.”语法一层一层地达到了想要的属性。
用户可以根据程序的需要创建自己的类,也可以通过实例化类的方式来构造对象。
对象具有的所有属性与方法都可以通过一定的规则来引用或者调用。
当不再需要对象时,可以删除(Delete)它,以便给其他的对象留出空间。
面向对象让软件工程具有很大的优越性,很多时候只需编写一次代码就可以反复重用,而在非面向对象编程(OOP)的眉况下,程序员则多半要在应用程序内部各个部分反复多次编写同样的功能代码。
所以,面向对象编程减少了编写代码的总量,从而加/,央了开发的进度,同时降低了软件中的错误量。
当然了,面向对象编程也有缺点,就是当修改基类时,其继承类大都会受到影响,大量的代码需重新测试与修改。
既然对象这么复杂,那么有没有已经预先定义好的对象模型来套呢?
答案是肯定的,首先是先得学习并理解那些已经定义好的对象模型,然后你就可以随心所欲地创建属于自己的、喜欢的、用得上的对象了。
这些已经定义好的对象叫做内置对象。
一般来说这些内置FlashMX对象可以访问和处理某些特定种类的信息。
大多数内置对象都具有一组方法(分配给对象的函数),可以调用这些方法,也可以返回相应的属性值或执行相关动作。
例如,Date对象会从系统时钟返回信息,而Sound对象可以控制影片中的声音元素。
某些内置对象还具有属性,可以读取这些属性的值。
例如,Key对象具有恒定的值,代表键盘上的键。
每个对象都具有自己的特性和能力,从而使它们在影片中很有用。
内置FlashMX对象分为4个类别,它们都在动作面板(Action)的“对象”(Object)文件夹中:
核心(Core)、影片(Movie)、客户端/服务器(Client/Server)和创作(Authoring),如图5-3所示。
图5-3对象类型
(1)核心对象(Core)
它包括以下对象:
●Arguments:
调用参数对象。
它是一个数组,其中包含作为参数传递给任何函数的值。
●Array:
数组对象。
可以连续记录数据,并对这些数据进行一系列的操作。
●Boolean:
布尔对象。
主要是一些布尔变量向其他变量进行类型转化的功能。
●Date:
日期对象。
主要是对日期、时间的一些操作。
●Function:
函数对象,对函数的一些操作。
●Math:
数学对象。
包括一些经常用到的数学函数比如三角函数、开方、对数函数等。
●Number:
数值对象。
包括了几个数值常量。
●Object:
自定义对象。
用户可以用这个来定义自己的对象。
●String:
串对象。
它能够使用String对象的方法和属性来操作原始字符串。
(2)影片对象(Movie)
影片对象是动作脚本专用的。
这些对象包括如下一些对象。
●Accessibility:
访问能力对象。
它是一些方法的集合,据说这些内容是给残疾人用的。
●Button:
按钮对象。
可以直接对按钮编写事件驱动函数。
●Capabilities:
效力能力对象。
系统多媒体的一些兼容属性。
●Color:
色彩对象。
它能够设置或者取得电影剪辑的RGB颜色值。
●Key:
键盘对象。
可以控制并口向应键盘的一些操作,并根据这些操作完成一定的功能。
●Mouse:
鼠标对象。
支持鼠标的一些操作与事件驱动。
●MovieClip:
动画对象。
提供了大量动画需要的方法与事件驱动。
●Selection:
选择对象。
可以设置和控制光标在FlashMX字段中的位置。
●Sound:
声音对象。
支持声音的各种复杂操作与事件驱动。
●Stage:
场景对象。
主要包括了动画场景中的一些属性。
●System:
系统对象。
包括了一些系统的属性。
●TextField:
文本对象。
控制文本的一些字体、边框和颜色等。
●TextFormat。
文字格式对象。
文字的一些具体格式控制。
(3)客户端/服务器对象(Client/Server)
可以用来在客户机和服务器之间进行通信的动作脚本对象。
它包括的对象有下面几种。
●LoadVars:
取得变量对象。
用于与后台程序比如PHP、ASP、JSP等进行数据通信。
●XML:
XML对象。
能识别当今最流行的XML文档的对象。
●XMLSocket:
套接字连接对象。
用于与后台建立起套接字连接。
(4)创作对象
用于自定义FlashMX创作应用程序。
这里只有如下两个对象。
●CustomActions(自定义动作):
这个对象的方法使得在FlashMX创作工具中播放的Flash电影剪辑可以管理该创作工具注册的任何自定义动作。
●LivePreview(可预映):
暂时只有一个onUpdate函数。
影片剪辑实例在动作脚本中以对象表示,它们的默认对象类是MovieClip。
要更改影片剪辑的类型,请参阅创建继承。
你可以调用内置影片剪辑方法,就像调用任何其他动作脚本对象方法一样。
有关每个对象的详细信息,可以查阅“帮助”菜单的联机“动作脚本字典”中相应的各个条目。
5.影片剪辑(MovieClip)类型
其实这个类型是对象类型中的一种,但是因为它在FlashMX中处于极其重要的地位,而且使用频率很高,所以在这里特别拿出来作为一个类型来讲。
在整个FlashMX中,只有MC是真正指向了场景中的一个物理元素——影片剪辑。
通过这个对象和它的方法以及对其属性的操作,就可以控制动画的播放和MC的状态,也就是说可以用脚本程序来书写和控制动画。
例如下面的语句:
onClipEvent(mouseUp){
myMc.prevFrame();
}
当松开鼠标左键的时候,影片剪辑myMc就会跳到前一帧。
5.2.3FlashMX的变量规范
和其他编程语言一样,FlashMX脚本中对变量也有一定的要求。
不妨将变量看成是一个容器,可以在里面装各种各样的数据。
在电影播放的时候,通过这些数据就可以进行判断、记录及储存信息等。
变量可以装载这样一些数据类型:
Number、String、Boolean、Object、MovieClip。
1.命名变量
变量的命名主要遵循以下3条规则:
●变量必须是以字母或者下划线开头,其中可以包括“$”、数字、字母或者下划线。
如_myMc、e3game、worl$dcup都是有效的变量名,但是!
go、2up、$food就不是有效的变量名了。
●变量不能和保留关键字同名(注意FlashMX是不区分大小写的),保留关键字列表见表5-1,并且不能为true或者false。
●变量在自己的有效区域里必须唯一。
2.变量的赋值
在FlashMX中,不强迫定义变量的数据类型,也就是说当把一个数据赋给变量的时候,这个变量的数据类型就已经确定下来了。
如语句:
S=23;
将23赋给了s这个变量,那么FlashMX就认定s是Number类型的变量。
如果在后面的程序中写了如下语句:
。
s
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Flash 动画 课件 开发