ActionScript的作用及类型
ActionScript是Flash中内嵌的脚本程序,使用ActionScript可以实现对动画流程以及动画中的元件的控制,从而制作出非常丰富的交互效果以及动画特效。
Flash MX 2004中的ActionScript是2.0版,它支持更多的功能,如类、继承等。不过作为动作脚本,最基本的功能变化不大。
从添加脚本的对象来分,ActionScript主要有以下几种:
为时间轴中的关键帧添加的脚本,为影片剪辑元件实例添加的脚本,为按钮添加的脚本。
在如图1所示的“动作”面板中可以看到Flash MX 2004中的动作脚本类型。

图1
从图1中面板左边的动作脚本目录中可以看到ActionScript主要有以下几种类型:
Global Functions(全局函数)、Global Properties(全局属性)、Statements(陈述)]Operators(运算符)、Built-in Classes(内置类)、Constants(常量)、Compiler Directives(编译命令)、Types(类型)、Deprecated(否决的)、Data Components(数据组件)、Screens(屏幕)和Components(组件)。Index是所有脚本命令的索引。
停止语句stop
前面制作的所有动画都没有添加动作脚本,所以每个动画在播放完最后一帧时都将回到第1帧重复播放。为了避免这种无休止的循环,可以使用停止语句stop。
stop语句没有参数,其使用方法如下:
stop();
当在时间轴中的某一关键帧上添加该语句后,动画播放到该帧的位置即自动停止。
如图2所示分别是文档stop.fla的5个关键帧。

图2
为该动画添加语句stop,使其停止在第10帧,其操作步骤如下:
(1)使用鼠标选中时间轴的第10帧,如图3所示。

图3
(2)按F9键打开“动作”面板,此时的“动作”面板标题栏为Actions-Frame,如图4所示。

图4
(3)在“动作”面板的脚本编辑窗口中输入脚本,如图5所示。添加了脚本后的帧发生了变化,如图6所示,其中的图标表示该帧中添加了脚本。

图5

图6
(4)按Ctrl+Enter键测试动画,效果如图7所示。

图7
由于在第10帧使用了stop语句,动画播放到第10帧时自动停止,不再继续播放下去。
在“动作”面板中为关键帧添加stop语句时,stop后面的括号和分号是不可省的,并且必须在英语输入法状态下输入。
与stop语句相对的是play语句,执行play语句时,动画从当前位置继续播放,其使用方法如下:
play();
点击浏览该文件
点击浏览该文件
跳转语句goto
goto的作用
goto语句可以用来使动画或动画中的某一个影片剪辑跳转到指定的帧。goto语句有两种形式,一种是gotoAndPlay,即跳转并播放,另一种是gotoAndStop,即跳转并停止。
表达式中参数的含义
goto语句的使用方法如下:
mcName.gotoAndPlay(frameName);
或:
mcName.gotoAndStop(frameName);
其中mcName是指一个影片剪辑的实例名称,如果它为_root,则表示主场景中的时间轴。如果省略,则表示该脚本程序添加到的时间轴所在的影片剪辑。
frameName为要跳转到的帧位置,它既可以是帧编号,也可以是帧标签,帧标签即为帧添加的名称。
goto语句的示例
在该动画中,地球模型只在如图8所示的两个位置之间运动。

图8
该动画的制作步骤如下:
(1)选中图层Layer 2的第1帧,如图9所示。

图9
(2)按Ctrl+F3键打开其“属性”面板,如图10所示。
图10
(3)在Frame下面的 文本框中为选中的帧命名一个帧标签,如begin,如图11所示。可以看到,命名后的帧发生了变化,如图12所示,第1帧添加了一个 图标,表示包含帧标签,该图标后面即是该帧的帧标签。

图11

图12
(4)选中图层Layer 2的第30帧,按F9键打开其“动作”面板,在其中添加如下脚本:
gotoAndPlay("begin");
“动作”面板如图13所示,添加脚本后的时间轴如图14所示。

图13

图14
(5)按Ctrl+Enter键测试动画,效果如图15所示。该动画只在第1~30帧之间播放。
图15
如果将上例的gotoAndPlay换成gotoAndStop,动画播放完第30帧后将停止在第1帧。
在上面的示例中,并不需要为第1帧添加帧标签,也可以直接在第30帧中使用如下语句:
gotoAndPlay(1);
这两种情况的效果是一样的。但是为帧添加帧标签可以使以后的编辑操作更方便。如在编辑过程中将第1帧移到了其他位置,这时使用gotoAndPlay(1)就不能正确找到需要的帧;而使用帧标签的脚本不会受到帧位置变化的影响。
点击浏览该文件
点击浏览该文件
条件语句if
if的作用
if语句用来判断条件是否成立,根据判断的结果为真(true)或为假(false)执行不同的操作。
表达式中参数的含义
if语句的用法如下:
| if(condition) {
statement(s);
}
|
其中,condition是一个用于判断的条件,该条件为真(取布尔值true)时,执行大括号中的语句statement(s),该条件为假时(取布尔值false)时,不执行大括号中的语句。
if语句还有如下形式:
| if(condition1) {
statement1(s1);
}else if(condition2) {
statement2(s2);
}else if(condition3) {
statements3(s3);
……
}
|
这是一种多重判断,即当满足不同条件时实现分支操作。
if语句的示例
如图16所示是使用if语句的例子。当在文本框中输入1~10之间的数时,动画跳转到与输入的数值相同的帧位置,当输入大于10或小于1的数时,动画跳转到最后1帧,提示正确输入。

图16
该动画的制作步骤如下:
(1)在第1帧中使用文本工具 输入数字1。
(2)依次在第2~10帧中插入关键帧,将其中的文本修改成对应帧的帧编号,如第2帧中的文本修改为2,第3帧中的文本修改为3。
(3)在第11帧中使用文本工具 输入文本“请正确输入”。
(4)单击 按钮新建一个图层。
(5)在新建的图层Layer 2中使用文本工具 输入文本“请输入要跳转到的帧数”。
(6)在步骤(5)添加的文本下面绘制一个文本框,在“属性”面板中选择Input Text(输入文本)选项,单击按下 按钮使文本显示边框,在Var后的文本框中输入文本input,作为该输入文本的变量名,如图17所示。

图17
(7)选中图层Layer 1的最后一帧,在“属性”面板中输入帧标签wrong,如图18所示。

图18
(8)选中图层Layer 2的第1帧,按F9键打开其“动作”面板,在其中添加如下语句:
stop();
this.onEnterFrame = function() {
if (input>=1 && input<=10) {
gotoAndStop(input);
} else {
gotoAndStop("wrong");
}
};
添加语句后的“动作”面板如图19所示。

图19
此时的时间轴如图20所示。

图20
(9)按Ctrl+Enter键测试动画,当在输入文本框中输入一个1~10之间的数字时,动画将跳转到相应的帧,如图21所示。
图21
在上面的脚本中,this.onEnterFrame = function()是为主时间轴定义的一个事件,即每当主时间轴进入一帧即执行大括号中的语句,这样就能使Flash不断检查输入的数字,一旦数字发生了变化,就能马上跳转到相应的帧。
在if后面括号中的条件是input>=1 && input<=10,这是一个复合条件,&&表示与操作,即当该符号两边的条件都成立时结果为true,只要有一者不成立则结果为false。
语句gotoAndStop(input)将输入文本中的内容作为gotoAndStop语句的参数,因为需要用到的是input文本框中的内容,而不是字符串input,所以该语句中的input不能加引号(")。
点击浏览该文件
点击浏览该文件
循环语句for
for的作用
当需要重复执行某种操作时就要用到循环语句,最常用的循环语句就是for语句。
表达或中参数的含义
for语句的用法如下