ActionScript基础教程
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语句的用法如下
for (i=beginNumber; i<=endingNuber; i+=step) {
statement(s);
}
其中,for后面的括号中有3条语句,第1条语句为循环变量赋初值;第2条语句作为循环变量的判断条件,即当变量满足该条件时即执行循环体中的语句(这里是statement(s););第3条语句是每执行一次循环要对变量进行的操作,step是一个布长值,这里是在每一次循环结束后对循环变量i加一个步长step。
例如,在一个空白文档的第1帧的“动作”面板中添加如下语句:
for (i=0; i<=10; i++) {
trace("i="+i);
}
按Ctrl+Enter键测试影片,将看到如图22所示的Output(输出)窗口。
图22
上面语句的作用即是在每执行一次循环操作时向输出窗口中发送循环变量i的值。
for语句的示例
如图23所示是利用for语句进行累加求和的一个示例。当在上面的输入文本框中输入一个1~1000之间的数,在下面的动态文本框中即可以马上得到从1到输入的数的累加和。
图23
该示例的制作步骤如下:
(1)使用文本工具 在场景中添加如图24所示的文本。
图24
(2)使用文本工具在第1行文本的下面添加一个文本框,在“属性”面板中选择Input Text选项,单击按下按钮使文本显示边框,在Var后的文本框中输入文本opernum,作为该输入文本的变量名,其他设置如图25所示。
图25
设置好后的输入文本如图26所示。
图26
(3)按住Shift+Ctrl键将输入文本框拖动复制到如图27所示的位置。
图27
(4)选中复制出的输入文本框,在“属性”面板中将文本类型改成Dynamic Text(动态文本),将变量名改成result,如图28所示。
图28
(5)选中时间轴中的第1帧,按F9键打开其“动作”面板,在其中添加如下语句:
this.onEnterFrame = function() {
if (opernum>0 && opernum<=1000) {
j = 0;
for (i=0; i<=opernum; i++) {
j += i;
}
result = j;
}
};
添加语句后的“动作”面板如图29所示。
图29
(6)按Ctrl+Enter键测试动画,当在输入文本中输入一个1~1000之间的数值时,在动态文本中会显示从1到该数的累加结果,如图30所示。
图30
一部Flash作品不论长短大小,都很难离不开动作脚本。不过动作脚本也并不是高深莫测。例如要使动画停下来,只需要一个简单的stop命令即可;要让动画跳转到某一帧,也只需要一个gotoAndStop或者gotoAndPlay命令。
除了对影片播放的良好控制,使用一些结构化的脚本程序可以实现更丰富的效果,如本文介绍的条件语句if、循环语句for等。 继续! 加油! 请问楼主有AS的电子书没? 请问AS是什么,没有听说过这个名词 但ActionScript的书到是有 谢谢分享,支持一下 就是ActionScript啊,能给我传份吗? 邮箱: [email]longren1226@163.com[/email] 我有ActionScript Cookbook,不过是英文版,谁要? 我发到资源下载好了
地址:[url=http://bbs.linuxpk.com/thread-35375-1-1.html]http://bbs.linuxpk.com/thread-35375-1-1.html[/url]
[[i] 本帖最后由 cheiron 于 2008-8-29 20:47 编辑 [/i]]
补充一个
文件页:
[1]