关键字
Flash MX2004入门与进阶实例:6.4 基本命令和程序结构控制Flash MX2004入门与进阶实例:6.4 基本命令和程序结构控制(Flash)

Flash MX2004入门与进阶实例:6.4 基本命令和程序结构控制

 

第六章 动作脚本入门
第四节 基本命令和程序结构控制(1)

前面几节我们讲解了ActionScript的基础知识,相信你已经对ActionScript的编程方法、基本概念以及语法规范等有了一定的认识。本节将对ActionScript的基本命令和程序结构控制进行研究,使你逐渐深入了解ActionScript的基本命令和程序的基本结构,学会自己编制简单的程序脚本,从而实现动画的交互性。

1.时间轴控制命令

1gotoAndPlay

一般形式:gotoAndPlaysceneframe);

作用:跳转并播放,跳转到指定场景的指定帧,并从该帧开始播放,如果没有指定场景,则将跳转到当前场景的指定帧。

参数scene,跳转至场景的名称;frame,跳转至帧的名称或帧数。

有了这个命令,我们可以随心所欲地播放不同场景,不同帧的动画。

例:

当你单击被附加了gotoAndPlay动作按钮时,动画跳转到当前场景第16帧并且开始播放:

onrelease{

gotoAndPlay16);

}

例:

当你单击被附加了gotoAndPlay动作按钮时,动画跳转到场景21帧并且开始播放:

onrelease{

gotoAndPlay"场景2"1);

}

2gotoAndstop

一般形式:gotoAndstopscene,frame);

作用:跳转并停止播放,跳转到指定场景的指定帧并从该帧停止播放,如果没有指定场景,则将跳转到当前场景的指定帧。

参数:scene:跳转至场景的名称;frame:跳转至帧的名称或数字。

3nextFrame()

作用:跳至下一帧并停止播放。

例:单击按钮,跳到下一帧并停止播放:

onrelease{

 nextFrame();

}

4)prevframe()

作用:跳至前一帧并停止播放。

例:单击按钮,跳到前一帧并停止播放:

onrelease{

prveFrame();}

5nextScene()

作用:跳至下场景并停止播放。

6PrevScene()

作用:跳至前场景并停止播放。

7)play()

作用:可以指定电影继续播放。

在播放电影时,除非另外指定,否则从第1帧播放。如果电影播放进程被GoTo(跳转)Stop(停止)语句停止,则必须使用play语句才能重新播放。

8Stop()

作用:停止当前播放的电影,该动作最常见的运用是使用按钮控制电影剪辑。

例如,如果我们需要某个电影剪辑在播放完毕后停止而不是循环播放,则可以在电影剪辑的最后一帧附加Stop(停止播放电影)动作。这样,当电影剪辑中的动画播放到最后一帧时,播放将立即停止。

9StopAllSounds()

作用:使当前播放的所有声音停止播放,但是不停止动画的播放。要说明一点,被设置的流式声音将会继续播放。

例如:

Onrelease{

StopAllSounds();

}

当按钮被单击时,电影中的所有声音将停止播放。

2.浏览器和网络控制命令

1fscommand命令

制作完成的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)

2getURL命令

一般形式:GetURLURLWindowmethod);

作用:事件添加超级链接,包括电子邮件链接。

例如:如果要给一个按钮实例附加超级链接,使爱好者在单击时直接打开“闪客起航”主页,则可以在这个按钮上附加以下动作脚本:

onrelease{

getURL(http://www.Flasher123.com);

}

如果要附加电子邮件链接,可以这样:

onrelease{

getURL(mailtoabc@yahoo.com.cn);

}

3loadMovieunloadMovie载入和卸载影片命令

由于交互的需要,我们常常在当前电影播放不停止的情况下,播放另外一个电影或者是在多个电影间自由切换时,这时就会用到loadMovieunloadMovie命令loadMovie命令载入电影,而unloadMovie则可以卸载由loadMovie命令载入的电影。如果没有LoadMovie动作,则Flash播放器只能显示单个电影SWF)文件,然后关闭。

LoadMovie使用的一般形式为:

LoadMovieURL,level/target,variblesl);

URL要载入的swf文件、jpeg文件的绝对或相对URL地址。相对地址必须是相对于级别上的swf文件。该URL必须和当前电影处于相同的子域中。要在使用loadMovie,则所有的swf文件都必须存储在相同的文件夹中,文件名前面不能有文件名称或磁盘标识符。

Target目标电影剪辑的路径。目标电影剪辑将被载入的电影或图像所替代。必须指定目标电影剪辑或目标电影的级别。二者只选其一。

Level指定载入到播放器中的电影剪辑所处的级别整数。

Varibles可选参数,如果没有要发送的变量,则可以忽略该参数。

当使用LoadMovie动作时,必须指定目标电影剪辑或目标电影的级别。载入到目标电影剪辑中的电影或图像将继承原电影剪辑的位置、旋转和缩放属性。载入图像或电影的左上角将对齐原电影剪辑的中心点。另外,如果选中的目标是_root时间轴,则图像或电影剪辑对齐舞台左上角。

例如,以下是LoadMovie语句被附加给导航按钮。在舞台上有一个看不见的电影剪辑,其实例名为daohangLoadMovie动作将使该电影剪辑作为目标参数载入SWF文件。

On(release){

LoadMovie(“daohang.swf”,_root.shanke);

}

下面是可以载入和当前SWF文件相同路径的图像:

LoadMovie(“image45.jpg”,“ourMovieClip”);

使用UnloadMovie可以从播放器中删除已经载入的电影或电影剪辑。UnloadMovie命令使用的一般形式为:

UnloadMovielevel/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);

}

 4LoadVariables命令

一般形式:LoadVariablesurl,level/”targt”,[ Variables]);

作用:它可以从外部文件读入数据。外部文件包括文本文件、由CGI脚本生成的文本、ASPPHPPERL脚本。读入的数据作为变量将被设置到播放器级别或目标电影剪辑中。

参数:

url变量将要载入的绝对或相对路径URL地址。

level/”targt”:指定载入到Flash播放器中的变量所处的级别的整数/接受载入的变量目标电影剪辑的路径。这二者只能选择其中一个。

Variables可选参数,如果没有要发送的变量,则可以忽略该参数。

在使用LoadVariables动作时,必须指定变量被载入的Flash播放器级别或电影剪辑目标。

例如:从一个文本文件中载入信息到电影主时间轴varTarget电影剪辑中,文本域的变量名必须匹配datd.txt文件中的变量名。

onrelease{

 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所示。

 

[h2] 

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-2for语句构成的循环结构流程图。

 

6-4-2  for语句循环结构流程图

 


4.常用对象简介

Flash MX 2004ActionScript是真正面向对象的编程语言,类和对象是面向对象编程语言的基本元素和概念。下面我们将几个最常用的对象做个简单介绍。

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