Flash MX2004入门与进阶实例:6.4 基本命令和程序结构控制Flash MX2004入门与进阶实例:6.4 基本命令和程序结构控制(
Flash)
Flash MX2004入门与进阶实例:6.4 基本命令和程序结构控制
第六章 动作脚本入门
第四节 基本命令和程序结构控制(1)
前面几节我们讲解了ActionScript的基础知识,相信你已经对ActionScript的编程方法、基本概念以及语法规范等有了一定的认识。本节将对ActionScript的基本命令和程序结构控制进行研究,使你逐渐深入了解ActionScript的基本命令和程序的基本结构,学会自己编制简单的程序脚本,从而实现动画的交互性。
1.时间轴控制命令
(1)gotoAndPlay
一般形式:gotoAndPlay(scene,frame);
作用:跳转并播放,跳转到指定场景的指定帧,并从该帧开始播放,如果没有指定场景,则将跳转到当前场景的指定帧。
参数:scene,跳转至场景的名称;frame,跳转至帧的名称或帧数。
有了这个命令,我们可以随心所欲地播放不同场景,不同帧的动画。
例:
当你单击被附加了gotoAndPlay动作按钮时,动画跳转到当前场景第16帧并且开始播放:
on(release){
gotoAndPlay(16);
}
例:
当你单击被附加了gotoAndPlay动作按钮时,动画跳转到场景2第1帧并且开始播放:
on(release){
gotoAndPlay("场景2",1);
}
(2)gotoAndstop
一般形式:gotoAndstop(scene,frame);
作用:跳转并停止播放,跳转到指定场景的指定帧并从该帧停止播放,如果没有指定场景,则将跳转到当前场景的指定帧。
参数:scene:跳转至场景的名称;frame:跳转至帧的名称或数字。
(3)nextFrame()
作用:跳至下一帧并停止播放。
例:单击按钮,跳到下一帧并停止播放:
on(release){
nextFrame();
}
(4)prevframe()
作用:跳至前一帧并停止播放。
例:单击按钮,跳到前一帧并停止播放:
on(release){
prveFrame();}
(5)nextScene()
作用:跳至下场景并停止播放。
(6)PrevScene()
作用:跳至前场景并停止播放。
(7)play()
作用:可以指定电影继续播放。
在播放电影时,除非另外指定,否则从第1帧播放。如果电影播放进程被GoTo(跳转)Stop(停止)语句停止,则必须使用play语句才能重新播放。
(8)Stop()
作用:停止当前播放的电影,该动作最常见的运用是使用按钮控制电影剪辑。
例如,如果我们需要某个电影剪辑在播放完毕后停止而不是循环播放,则可以在电影剪辑的最后一帧附加Stop(停止播放电影)动作。这样,当电影剪辑中的动画播放到最后一帧时,播放将立即停止。
(9)StopAllSounds()
作用:使当前播放的所有声音停止播放,但是不停止动画的播放。要说明一点,被设置的流式声音将会继续播放。
例如:
On(release){
StopAllSounds();
}
当按钮被单击时,电影中的所有声音将停止播放。
2.浏览器和网络控制命令
(1)fscommand命令
制作完成的Flash影片通常都是在Flash播放器中播放。控制Flash播放器的播放环境及播放效果,是制作者经常要解决的问题。比如,怎样使影片全屏幕播放、怎样在影片中调用外部程序等。
fscommand命令可以实现对影片浏览器,也就是Flash Player的控制。另外,配合javascript脚本语言,fscommand命令成为Flash和外界沟通的桥梁。
fscommand命令的语法格式如下:
fscommand(命令,参数);
fscommand命令中包含两个参数项,一个是可以执行的命令,另一个是执行命令的参数,如表6-4-1所示是fscommand命令可以执行的命令和参数。
表6-4-1 fscommand可以执行的命令和参数
命令 | 参数 | 功能说明 |
quit | 没有参数 | 关闭影片播放器 |
fullscreen | true or false | 用于控制是否让影片播放器成为全屏播放模式。 true为是,false为不是。 |
allowscale | true or false | false让影片画面始终以100%的方式呈现,不会随着播放器窗口的缩放而跟着缩放;true则正好相反。 |
showmenu | true or false | true代表当用户在影片画面上右击时,可以弹出全部命令的右键菜单,false则表示命令菜单里只显示“About Shockwave”信息。 |
exec | 应用程序的路径 | 从Flash播放器执行其他应用软件 |
trapallkeys | true or false | 用于控制是否让播放器锁定键盘的输入,true为是,false为不是。这个命令通常用在Flash以全屏幕播放的时候,避免用户按下Esc键,解除全屏幕播放。 |
[1] [2] [3] [4] 下一页
第六章 动作脚本入门
第四节 基本命令和程序结构控制(2)
(2)getURL命令
一般形式:GetURL(URL,Window,method);
作用:事件添加超级链接,包括电子邮件链接。
例如:如果要给一个按钮实例附加超级链接,使爱好者在单击时直接打开“闪客起航”主页,则可以在这个按钮上附加以下动作脚本:
on(release){
getURL(“http://www.Flasher123.com”);
}
如果要附加电子邮件链接,可以这样:
on(release){
getURL(“mailto:abc@yahoo.com.cn”);
}
(3)loadMovie和unloadMovie载入和卸载影片命令
由于交互的需要,我们常常在当前电影播放不停止的情况下,播放另外一个电影或者是在多个电影间自由切换时,这时就会用到loadMovie和unloadMovie命令,loadMovie命令载入电影,而unloadMovie则可以卸载由loadMovie命令载入的电影。如果没有LoadMovie动作,则Flash播放器只能显示单个电影(SWF)文件,然后关闭。
LoadMovie使用的一般形式为:
LoadMovie(URL,level/target,variblesl);
URL:要载入的swf文件、jpeg文件的绝对或相对URL地址。相对地址必须是相对于级别上的swf文件。该URL必须和当前电影处于相同的子域中。要在使用loadMovie,则所有的swf文件都必须存储在相同的文件夹中,文件名前面不能有文件名称或磁盘标识符。
Target:目标电影剪辑的路径。目标电影剪辑将被载入的电影或图像所替代。必须指定目标电影剪辑或目标电影的级别。二者只选其一。
Level:指定载入到播放器中的电影剪辑所处的级别整数。
Varibles:可选参数,如果没有要发送的变量,则可以忽略该参数。
当使用LoadMovie动作时,必须指定目标电影剪辑或目标电影的级别。载入到目标电影剪辑中的电影或图像将继承原电影剪辑的位置、旋转和缩放属性。载入图像或电影的左上角将对齐原电影剪辑的中心点。另外,如果选中的目标是_root时间轴,则图像或电影剪辑对齐舞台左上角。
例如,以下是LoadMovie语句被附加给导航按钮。在舞台上有一个看不见的电影剪辑,其实例名为daohang。LoadMovie动作将使该电影剪辑作为目标参数载入SWF文件。
On(release){
LoadMovie(“daohang.swf”,_root.shanke);
}
下面是可以载入和当前SWF文件相同路径的图像:
LoadMovie(“image45.jpg”,“ourMovieClip”);
使用UnloadMovie可以从播放器中删除已经载入的电影或电影剪辑。UnloadMovie命令使用的一般形式为:
UnloadMovie(level/target);
要卸载某个级别中的电影剪辑,需要使用level参数,如果要卸载已经载入的电影剪辑,则可以使用target目标路径参数。
例如:
on(prass){
unloadMovie(“_root.mymovie”);
loadMovieNum(“movie.swf”,4);
}
上面这段程序代码的功能是,卸载主时间轴上的影片剪辑mymovie(影片剪辑名字),然后将电影movie.swf载入到level4级别中。
说明:可以将不同的影片文件通过loadMovie命令,把它们叠放在不同的级别(level)上。最下面的主影片文件的级别号为0,你可以将后来加载的影片文件放在不同的级别位置,数字越大,摆放的位置越高。如果两个影片文件加载的级别号一样,后一个加载的影片文件会取代之前加载的影片文件。因此,加载的影片文件一般要放在0以上的级别,否则,新加载的影片就会覆盖主影片文件。
下面的示例可以卸载级别4上已经载入的电影。
on(press){
unloadMovieNum(4);
}
(4)LoadVariables命令
一般形式:LoadVariables(url,level/”targt”,[ Variables]);
作用:它可以从外部文件读入数据。外部文件包括文本文件、由CGI脚本生成的文本、ASP、PHP或PERL脚本。读入的数据作为变量将被设置到播放器级别或目标电影剪辑中。
参数:
url:变量将要载入的绝对或相对路径URL地址。
level/”targt”:指定载入到Flash播放器中的变量所处的级别的整数/接受载入的变量目标电影剪辑的路径。这二者只能选择其中一个。
Variables:可选参数,如果没有要发送的变量,则可以忽略该参数。
在使用LoadVariables动作时,必须指定变量被载入的Flash播放器级别或电影剪辑目标。
例如:从一个文本文件中载入信息到电影主时间轴varTarget电影剪辑中,文本域的变量名必须匹配datd.txt文件中的变量名。
on(release){
LoadVariables(“datd.txt”, “_root. varTarget”);
}
为了帮助你更好的理解LoadVariables命令的使用方法,下面我们提供一个范例(范例fla源文件文件路径:配套光盘/……/利用loadVariables调用外部变量.fla),要加载外部文本文件的存放路径与范例源文件路径一样,文件名为“question.txt”。
在Flash MX 2004中打开影片源文件“利用loadVariables调用外部变量.fla”,然后测试影片,画面如图6-4-1所示。

图6-4-1 范例运行画面
上一页 [1] [2] [3] [4] 下一页
第六章 动作脚本入门
第四节 基本命令和程序结构控制(3)
如图6-4-1所示的画面上,有5个动态文本对象,当范例运行时,通过LoadVariables命令加载外部的“question.txt”文件中的变量,然后把变量分别显示在这5个动态文本对象上。
我们先看看“question.txt”文件的内容,如图6-4-2所示。

图6-4-2 “question.txt”文件
说明:将要创建的文本文件必须保存为Unicode格式,否则加载的中文将显示乱码。如果你使用Windows98系统,那么【记事本】程序将不能创建Unicode格式的文本文件,这时你必须借助其他方法来创建Unicode格式的文本文件,比如你可以使用Dreamweaver来编辑文本文件。
“question.txt”文件中定义了一些关于测验题目的变量,每个文本文件中都是定义了5个变量。变量question定义的是这道测验题目的问题文本,变量answer1 ~ answer4定义的是这道测验题目的 4 个备选答案文本。这5个变量将来就加载并分别显示在影片的5个动态文本中(文本对象的变量名称和相应变量的名字一样)。
说明:在编写文本文件时要注意,每个变量之间一定要用 & 符号隔开,另外在定义完最后一个变量以后,不要回车换行,让光标停留在最后一个字符后面。
我们再来看看影片源文件“利用loadVariables调用外部变量.fla”。如图6-4-3是这个影片文档的主时间轴图层结构。

图6-4-3 范例图层结构
【背景和标题】图层是用绘图工具和文本工具创建的范例的背景图形和标题文字,起到美化实例的效果。
【动态文本】图层创建了5个动态文本对象,你可以打开【属性】面板观察它们的【变量】名称,它们的【变量】名称与外部文本文件中的5个变量的名字是一致的。这样才可以接收并显示这些变量。
【Action】图层定义加载外部文本文件的动作脚本,选择第1帧,打开【动作】脚本,动作脚本如下:
loadVariables("question.txt",_root);//将外部文本文件加载到影片根时间轴上
3.程序流程结构控制
所谓流程控制,无非就是我们想控制动画程序的执行顺序而已。众所周知,Flash中动画依靠的是时间轴,在没有脚本的情况下,动画会依照时间轴从第一帧不停的播放到最后一帧,然后重复播放或者停止。为了能更好地控制动画,就必须使用脚本语句。而要想使动画具有逻辑判断的功能,就要使用流程控制语句了。
下面我们来讨论控制程序流程的选择结构和循环结构。
(1)选择结构
一般情况下,Flash执行动作脚本从第一条语句开始,然后按顺序执行,直至达到最后的语句。这种按照语句排列方式逐句执行的方式,称为顺序结构。顺序结构是程序中使用最多的程序结构,但用顺序结构只能编写一些简单的动作脚本,解决一些简单的问题。
在实际应用中,我们往往有一些需要根据条件来判断结果的问题,条件成立是一种结果,条件不成立又是一种结果。像这样复杂问题的解决就必须用程序的控制结构,控制结构在程序设计中占有相当重要的地位,通过控制结构可以控制动作脚本的流向,完成不同的任务。
选择结构在程序中以条件判断来表现,根据条件判断结果执行不同的动作。If语句和else语句联用最常用的形式为:
if(条件){
代码块A;
}
else{
代码块B
}
当if语句的条件成立时,执行代码块A的内容,当条件不成立时,执行代码块B的内容。如图6-4-1是程序执行的流程图。

图6-4-1 选择结构流程图
这里需要说明的是,if语句中的条件是由关系表达式或者逻辑表达式实现的。关系表达式和逻辑表达式的值都是布尔(逻辑)值,因此判断if语句中的条件是否成立,实际上就是判断关系表达式或者逻辑表达式的值是真(true)还是假(false)。如果条件表达式的值为true,执行代码块A的内容,如果条件表达式的值为false,则执行代码块B的内容。
上一页 [1] [2] [3] [4] 下一页
第六章 动作脚本入门
第四节 基本命令和程序结构控制(4)(2)循环结构
循环结构是三种基本程序结构之一。它通过一定的条件控制动作脚本中某一语句块反复执行,当条件不满足时就停止循环。这种程序结构对实现交互性的影片有着举足轻重的作用,在制作动画时,我们经常使用这种程序结构。
for语句是实现程序循环结构的语句,它的语法格式更紧凑,在循环起始语句中包含了循环控制变量的初始值、循环条件和循环控制变量的增量,清楚明了,因此使用较为广泛。for语句使用的一般形式为:
for(表达式1;条件表达式;表达式2)
{
代码块
}
表达式1:是一个在开始循环序列前要计算的表达式,通常为赋值表达式。
条件表达式:计算结果为true(真)或false(假)的表达式。在每次循环前计算该条件,当条件的计算结果为true时执行循环,当条件的计算结果为false时退出循环。
表达式2:一个在每次循环迭代后要计算的表达式,通常使用带++(递增)或--(递减)运算符的赋值表达式。
for语句的执行过程是,先计算“表达式1”的值,然后判断“条件表达式”的值是true(真)还是false(假),如果条件是true,那么执行循环体中的代码块,执行完以后,再执行“表达式2”,接着开始新一轮的循环;如果条件是false,那么就跳出循环,执行for语句的后继语句。如图6-4-2是for语句构成的循环结构流程图。

图6-4-2 for语句循环结构流程图
4.常用对象简介
Flash MX 2004
的ActionScript是真正面向对象的编程语言,类和对象是面向对象编程语言的基本元素和概念。下面我们将几个最常用的对象做个简单介绍。(1)Math对象
作为一门编程语言,进行数学计算是必不可少的。在数学计算中经常会使用到数学函数,如取绝对值、开方、取整等,还有一种重要的函数是随机函数。ActionScript将所有这些与数学有关的方法以及随机数都集中到一个类里面——Math方法。
Math.abs绝对值函数
作用:用来计算一个数的绝对值。
例如:计算-9的绝对值,赋给x:
x=Math.abs(-9);
Math.round 四舍五入取整函数
作用:方法将一个浮点数四舍五入为最接近的整数。
例如:输出9.4的取整,即输出9。
trace(Math.round(9.4));
Math.min、Math.max 最大、最小值函数
作用:Math.min方法取两个数中较小的一个数,Math.max方法取两个数中较大的一个数。
例如:
trace(Math.min(9, 8));
trace(Math.max(9, 8));
输出窗口中显示:8、9。
Math.sqrt平方根函数
作用:计算一个数的平方根,
例如:计算64的平方根:
trace(Math.sqrt(64));
输出窗口中显示:8
Math.random()随机数函数
作用:该方法返回一个大于或等于0并且小于1的随机浮点数。
例如:返回 0、1、2、3 或 4 中的一个随机值:
Math.random()*5;
随机数在Flash中的应用非常广泛。一些下雨、下雪的场景动画中常常用到随机数的设定,以取得一种自然的特效。
(2)Color对象
运用好的色彩可以使Flash作品具有更大的感染力,要做出好的作品在色彩搭配和控制上都得搭配合适才行。在ActionScript中,Color对象专门用来管理颜色。使用Color对象可以实现许多色彩特效。
new Color()
作用:创建Color对象的实例。
例如:myColor = new Color(myMC);
setRGB()
作用:设置影片剪辑实例对象的RGB值,即颜色。
setRGB的参数是以十六进制表示的,0x表示十六进制,后面的6位数字每两位为一组,分别表示红、绿、蓝3种颜色成份。如0xFF0000表示纯红,0x00FF00表示纯绿,0x0000FF表示纯蓝,0xFFFF00表示纯黄。
例如:myColor.setRGB(0xFF0000);
getRGB()
作用:获取由setRGB方法指定的颜色值。
(3)Date对象
Date对象使你可以获取相对于通用时间或相对于运行Flash Player的操作系统的日期和时间值。
new Date()
作用:创建一个Date对象的实例。
例如:myDate = new Date(2003, 7, 8);
这是指定时间创建一个Date对象的实例。
getDate()
作用:获取系统时间来创建Date对象的实例。
例如:
myDate = new Date();
year = myDate.getYear();
(4)Sound对象
在时间轴中直接嵌入声音是制作Flash MV的一种通用手法,但是这种方法除了从头至尾地播放声音外,并不能对声音进行很好的控制。ActionScript内置的Sound对象为我们提供了管理和控制声音的一种好方法。
new Sound()
作用:创建Sound对象的实例。
例如:mySound = new Sound();
attachSound()
作用:在影片播放时将【库】中的声音元件附加到场景中。
要使用该方法将声音附加到场景中,首先需要在【库】中为声音添加链接。在要添加链接的声音元件上单击鼠标右键,在弹出的快捷菜单中选择【链接】命令,弹出【链接属性】对话框,选择【为脚本导出】和【第一帧导出】两个选项。然后才可以在程序中编写类似于下面的程序代码:
mySound.attachSound("music");
start()和stop()
作用:让声音开始播放和停止用Sound对象播放的声音。
例如:
mySound.start();//开始播放声音
on (release) {
mySound.stop();//停止播放声音
}
说明:本节只是对一些常用的对象做了简单了介绍,其实Flash MX 2004提供了大量的对象,这些对象都属于相应的类。有关这方面的详细内容,请参看作者的另一本图书《Flash MX 2004高级编程》。
上一页 [1] [2] [3] [4]
2006-01-08 15:05:44.0