flash 脚本4

来源:互联网 发布:网络语咸鱼是什么意思 编辑:程序博客网 时间:2024/05/17 01:06
4、FLASH脚本-点语法以及路径、深入了解时间控制、无条件转移    十、点语法以及路径
点(.)语法、 路径
通过本节的学习要掌握(.);能正确地输入影片剪辑的实例名称;理解相对路径和绝对路径
的概念,理解分层结构中的包含关系和并列关系,
点(.)语法
动作脚本中,点(.)通常用于指定对象或影片剪辑相关联的属性或方法,或者标识影片剪
辑、变量、数对象的目标路径。点语法表达式是以对象或影片剪辑的名称开始,后跟一个点,
最后以要指定的元素 结束。
例如:(1)张三的身高。这句话用 AS 语言表示为:张三.身高
(2)安徽合肥中澳学院。这句话用 AS 语言表示为:安徽.合肥.中澳学院
元件命名
在上面的例子中, “张三”是人名, “身高”是他的属性,那么,在 FLASH 中怎么样
用 AS 语言来表示一个影片剪辑的高度呢?
类似地我们要给影片剪辑取一个名称,如果在主场景中有放入一个影片剪辑,那么这个影片
剪辑相 对于场景是场景的一个实例,在场景中选中影片剪辑就可以在属性面板中键入实例
名。
好了,小球有了实例名称了,我们现在来表示它的高度(_height)。
注意: 在命名实例名时,最好意义明确,可以用英文、汉语拼音和中文,并且不同类型的元
件加不同的前后缀,在实际编程中我们往往不太注意这些,规范的命名不仅容易阅读,还能
为其增加一些特定的后缀触发代码提示。
命名影片剪辑实例;加 _mc 后缀,例如 my_mc。
命名按钮时,应使用 _btn 后缀。例如 my_btn.。
命名文本时,应使用 _txt 后缀。例如 my_txt。
例如上例中小球的实例名如果加上后缀_mc就会出现影片剪辑属性的代码提示
安徽.合肥.中澳学院
小球._height
张三.身高
路径
“路径”指“道路”,“路线”其含义是:如何到达目的地,这个目的地叫做路径的目标,
在 flash 中 引用了目标路径的概念,目标路径:是 SWF 文件中影片剪辑实例名称,变量和
对象的分层结构地址。
? 目标:指的是将要被动作脚本控制的对象,有影片剪辑实例,变量等。
? 路径:指如何到达目标,即我们如何从控制点到达被控制点。
? 分层结构:flash文件是有一个个影片或影片剪辑组成的,它们有各自的时间轴、变量、
数组等,它们 的位置关系有两种,一是父子关系;二是并列关系。
所谓父子关系指的是包含与被包含的关系,例如: 把影片剪辑 mc1 拖放到影片剪辑 mc
中,则称 mc1 是 mc 的子级,反过来 mc 称作 mc1 的父级。它们的层次结构用点语法表
示,圆点前面的对象包含着圆点 后面的对象,如_root.mc.mc1 即_root 包含了 mc,而 mc
包含了 mc1。
所谓并列关系指的是对等的关系,它们之间没有包含与被包含的关系,如:_root.mc_a 和
_root.mc_b。
在 flash 应用中,可以从 1 个时间轴向另一个时间轴发送信息,发送信息的时间轴叫控制
时间轴,接 收信息的时间轴叫目标时间轴。也就是说控制时间轴发出的命令可以控制目标
时间轴的动作。要实现这种 控制功能必须编写目标路径。目标路径分为绝对路径和相对路
径。
绝对路径
绝对目标路径指的是从根时间轴开始,一直延续到列表中目标时间轴中的实例为止。 绝对目
标路径简单易懂但重用性差。
在编写绝对目标路径时,首先写上_root,一方面表示这个路径是一个绝对路径,另一方面
表示这个路径的最顶层时间轴是本场景中的根时间轴_root。
相对路径
相对目标路径取决于控制时间轴和目标时间轴之间的关系, 相对目标路径就是站在控制点去
看被控制 点。 若向父级方向看也就是向根时间轴方向看, 在相对路径中, 使用关键字 this 指
示当前时间轴:使用别 名_parent 指示当前时间轴的父级时间轴,可以重复使用_parent,每
使用一次就会在同一层的影片剪辑的层 次中上升一级,有多少元件就写多少_parent,若向
下看只需要用点运算符,中间有多少元件就写多少实例名。
例如:
this._parent
this._parent._parent
this.mc.mc1
编写目标路径的方法
在 Flash8 中可以用多种方法编与目标路径,直接手工输路径,或者使用“插入目标路径”
对话框。我 们只需要为影片剪辑和变量等正确的输入名称,使用动作脚本面板的“插入目
标路径”按钮,找到你要控 制的对象即可。
其具体步骤如下:
(1)选择想为其分配动作的影片剪辑,帧或按钮实例,它将变为控制时间轴。
(2)在“动作”工具箱(面板左侧)中选择需要目标路径的动作或方法。
(3)单击动作脚本中想插入目标路径的参数框或位置。
(4)单击动作脚本编辑窗格上面的“插入目标路径”按钮,打开“插入目标路径”对话框。
(5)选择“绝对”或“相关”目标路径模式。
(6)在“插入目标路径”显示列表中选择一个影片剪辑,单击“确定” 。
观察目标路径
由上图在以看出影片剪辑之间的分层结构:mc 中包含了两个子级 mcA、mcB;而 mcA 中
又包含了三 个子级 mc1、mc2、mc3。
按 F9 打开动作面板,点击“插入目标路径”按钮后,在弹出的“插入目标路径”对话框
中我们可以 清楚地看到分层结构。
当我们选中一个目标后,再选择“相对”或“绝对”按钮后,在“插入目标路径”对话框的
最上面一 栏里就会显示出路径,例如:控制点为 mcA,控制目标为 mc1,路径为:
相对路径:this.mc1 绝对路径:_root.mc.mcA.mc1
       十一、深入了解时间控制
通过本课的学习,掌握在按钮上添加代码的方法;理解 on 命令的函数功能;
掌握时 间轴控制命令的功能,语法格式,掌握在帧上添加命令基本操作,能使
用帧命令和按钮命 令控制一些简单的时间轴动画。
on 事件处理函数
事件是指软件或硬件发生的事情,它需 Macromedia Flash 的应用程序对事件有
一定的 响应。硬件发生的事件如按下鼠标、单击鼠标、拖动鼠标等。软件发生
的事件如影片剪辑 刚刚被载入场景、影片剪辑被卸载等。为了使应用程序对事
件做出反应,必须使用事件处 理函数。
下面我们就来学习 on 事件外理函数。 双击代码选择区中的“全属函数”|“影
片剪辑控制” |“on”命令后,弹出选项
On 事件动作使用较多,它一般直接作用于按钮,也可以作用于影片剪辑实例。
其调用格式如下:
[attach]1527[/attach]
理解 on 事件中的参数意义
在创建一个动态文本,在属性面板里输入变量名:txt.再创建一个按钮实例,选中按
钮,
打开动作脚本面板输入代码:
on (press) {
txt = "发生了鼠标按下(press)事件";
}
on (release) {
txt = "发生了鼠标释放(release)事件";
}
on (releaseOutside) {
txt = "发生了鼠标外部释放"+newline+"(releaseOutside)事件";
}
on (rollOver) {
txt = "发生了鼠标滑过(rollOver)事件";
}
on (rollOut) {
txt = "发生了鼠标滑离(rollOutr)事件";
}
on (dragOver) {
txt = "发生了鼠标拖过(dragOver)事件";
}
on (dragOut) {
txt = "发生了鼠标拖离(dragOut)事件";
}
on (keyPress "<Left>") {
txt = "发生了按左键事件"+newline+"(keyPress\"<Left>\")事件";
时间轴控制命令
时间轴控制语句是较基础的 ActionScript 控制 语句。时间轴控制语句是掌握
ActionScript 语句的基 础, 它们的主要任务是控制帧的停止、 播放、 跳转等。只
要带有时间轴的动画效果,就可以用时间轴控制 语句来进行控制。时间轴一共
有两种,一种是场景中的 时间轴, 我们叫做主时间轴。 另一种是元件中的时
间轴, 例如影片剪辑、图形元件中的时间轴。所以,时间轴控 制语句也可以分
成两类,一类是控制主时间轴,一类控制影片剪辑时间轴。打开动作脚本箱,点
击“全局函数”“时间轴控制”我们会看到时间轴控 9 条时间轴控制命 令。在
这一课中我们将分别介绍它们的功能及使用方法。
play( ) 与 stop ()
play 和 stop 在 Flash 中用于控制动画的播放和停止,play 命令使播放头从它当
前位置 向前移动。stop 停止当前正在播放的 SWF 文件。此动作最通常的用法
是用按钮控制影片 剪辑。是 Flash中控制动画最基本的命令。
使用方法如下:路径.play()               路径.stop()
帧命令
我们知道一个有动画的影片剪辑,场景时间轴只有一帧 这个影片剪辑也能正常
播放, 但如果是图形元件中做的动画,在场景中必须有与元件时轴同样的帧频
数才能正常播放。
这就说明了影片剪辑有独立的时间轴。而图形元件的时间轴必须依赖父级时间
轴,所以, 场影中的影片剪辑实例, 必须控制影片剪辑的时间轴。 要在场景
中控制影片剪辑的时间轴, 就要给影片剪辑输入实例名称。
下面我们做一个实例,通过该例,我们来掌握在帧上添加命令的方法,初步了解
控制当前时间、根时间轴控制元件时间。元件时间轴控元件时间轴的方法。
我们播放动画时,可以看到每个动画都是动的,现在我们来进行控制。
(1)打开素材, 分别选中场景中的小花, 和树叶, 在属性面板里输入实例名
“花” “叶” 。
(2) 进入名称为“叶引导线”的影片剪辑元件的编辑区中,点击“AS 层”的
第 1帧打开动作面板。输入命令:
stop();//停时当前时间轴
在第 50 帧插入空白关键帧,选中此帧,打开动作面板,输入命令:
this._parent.play();//父级时间轴(根时间轴) 播放
在主场景“AS 层”的第 1 帧,添加命令:
this.花.play()//当时间轴中的影片剪辑实例"花"播放
在主场景“AS 层”的第 170 帧添加命令:
stop();//停止当前时间轴
this.叶.play();//当前时间轴中的实例"叶"播放
测试影片看看效果。
总结:通过本课学习,要掌握自身时间轴的控制,子级时间轴的控制,父级时
间轴的控制, 对初学的朋友,最简单的方法是:正解输入实例名后,通过“插
入目标对话框,找到你的控制目标,这时软件会自动给你编写好路径,你只需在
路径后面加上一个小点“.”然后加 上 stop()或 play()命令。 帧命令是播放头来
触发的,播放头经过你的命令帧,这帧上的命令就被执行了。
按钮的交互控制
我们利用此动画练习在不同的控制点上来控制 影片。现在我们任意选两个控
制点,如果选择 mcA 中放一个停按钮,mc1 中放一个播放 按钮,用这两个按
钮来控制所有影片剪辑。
停止按钮上的代码 :
on (press) {
_root.mc.stop();
_root.mc.mcA.stop();
_root.mc.mcB.stop();
_root.mc.mcA.mc1.stop();
_root.mc.mcA.mc2.stop();
_root.mc.mcA.mc3.stop();
}
播放按钮上的代码:
on (press) {
_root.mc.play();
_root.mc.mcA.play();
_root.mc.mcB.play();
_root.mc.mcA.mc1.play();
_root.mc.mcA.mc2.play();
_root.mc.mcA.mc3.play();
}
说明:上例中使用的都是“绝对”路径,如果你对路径的概念掌较好,可以选
择性的
使用“相对”路径或“绝对”路径。
本课涉及的语法及规范
? 圆括号 “ ()” :圆括号在动作脚本中作用非常大,在定义函数时在将参
数全部放到圆 括号内;在调用函数时要将传递给函数的所有参数包含在小括号
里; 在设置表达式优先级或增强动作语名的易读性时都需要使用到圆括号。 例如:
本课学的 on 函数用来定义鼠标或键盘响应事件, 其中选择的鼠标事件就是参
数。有时也可以没有参数例如:函数 play()。
? 分号 “;” :动作脚本中的分号是用来作为语句结束的标记, 在 Flash AS 脚
本中,任何 一条语句都是以“;”号结束的。虽然有时省略了“;”号,Flash 也
可以成功的编译这个脚 本,但这是不规范的。
? 花括号“{ }” ,动作脚本中的一组语句可以被一对花括号“{……}”包
括起来,成为一 个语名组。在由多个动作状态组成的语句组中,使用花括号可
以有效地来区分各命令的层级和从属关系。
       十二、无条件转移
在上一课中我们学习了时间轴控制命令中的 play()和 stop()命令,这一课中我们
学习时间轴控制命令中的另外6个命令。通过本节的学习掌握跳转命令的功能;
能进行一些简单的交互控制。
正常情况下时间轴从第一帧开始按顺序向下播放,使用跳转命令可以打破原来
的播放顺序,从而实现各种特效,跳转命令有两个它们是 gotoAndPlay 和
gotoAndStop,应用格式为:
scene:String [可选] — 一个字符串,指定播放头要转到其中的场景的名称。
frame:Object — 表示播放头转到的帧编号的数字,或者表示播放头转到的帧标
签的字符串。
gotoAndPlay|(“scene”, frame)的函数意义是:将播放头转到场景中指定的帧并
从该帧开始播放。如果未指定场景,则播放头将转到当前场景中的指定帧。
gotoAnd Play
在动作面板的 “代码选择区” 中选择 “全局函数” | “时间轴控制” | “gotoAndStop”
命令后,在此可以选择此命令的参数。
该参数共有两个提示,其含义如下所述。
“gotoAndPlay(帧);” :按照该提示,可以在括号内输入需要跳转的帧数,例如,
当播放到当前帧的时候,跳转到第 20 帧,则应当在当前帧上添加代码
gotoAndPlay(20);。
“gotoAndPlay(“场景” ,帧)” :按照该指示可以在括号内指定播放某一场景
中的某一帧。将播放头
转到场景中指定的帧并停止播放。例如:当播放到当前帧的时候自动跳转至
scene_2(场景2)的第 20 帧, 则在当前帧上添加代码: gotoAndPlay("场景_2", 25);
如果未指定场景,播放头将转到当前场景中的帧。
注意:
? 在进行跳转时应该尽力避开场景和帧编号,而使用帧标签,帧标签可以穿越所
有场景,可以减少 错误的发生,还可以使 flash 运行速度增快。还便于修改。
? 只能在根时间轴上跳转时使用 scene 参数,不能在影片剪辑或文档中的其它
对象的时间轴内使用该参数。
gotoAndPlay([scene:String], frame:Object) : Void
gotoAndStop([scene:String], frame:Object) : Void
gotoAndPlay("场景",帧);
gotoAndStop("场景",帧)
2 ? 如果从元件时间轴跳转元件时间轴时,应该先加路径再写跳转命令。例如
从元件时间轴转到根时间轴的标签为“f”的帧上停止,代码该这样写:
_root.gotoAndStop("f");
gotoAndStop
在动作面板的代码选择区中选择“全局函数”|“时间轴控制”|“gotoAndStop”
命令后,在代码显示区中的参数意义与 gotoAndPlay的一样,这里就不再重述。
例如:当播放到当前帧时要自动跳转到“f2”帧处停止,则在当前帧上添加代码:
gotoAndStop("f2");//跳转到帧标签为“f2”的该帧处停止。
又如:gotoAndStop("场景 2", 1);//播放头从当前帧跳转到“场景 2”的第1 帧,
并在该帧处停止。
场景面板的操作
场景:执行“窗口”|“设计面板”|“场景”菜单命令,就会调出“场景面板” ,
在该面 板中可以进行场景的添加、复制、删除、重命名、排序等操作。
为了方便组织文档可以使用场景,例如, 可以使用单独的场景用于简介、 出现
的消息以及片头片字幕。
当文档含有多个场景时,播放时是按场景的先后顺序依次进行播放的,而且所有
场景中的帧是按场景顺序 连续编号的, 例如:如果文档包含两个场景, 场景 1 中
有 10 帧,场景 2 中有 20 帧,则场景 2 中的帧的编
号为 11 到 30。
nextFrame 和 nextScene
这两个命令通常与 on 命令结合,并作用于按钮上。单击鼠标后,播放下一帧
(nextFrame)或下一个场景(nextScene)。prevFrame 和 prevScene
这两下命令通常用来控制播放上一帧或上一个场景。其功能刚好与 nextFrame
和 nextScene相反

场景跳转
制作播放面板的操作步骤如下:
(1)点击“窗口”|“其它面板”|“场景” ,打开的场景面板,点击添加场景
按钮,新建 3 个场景,这样共是 4 个场景。在场景 4 的第 1 帧输入帧标签
“s4_f1” ,分别在场景 2~场景 4 中创建一个按钮。
(3)进入“场景 1” ,在“图层 1”的第 1 帧制作一个播放界面
(4)给按钮添加代码
按钮 1 上的代码:
on (release) {
gotoAndStop("场景 2", 1);
}
按钮 2 上的代码:
on (press) {
gotoAndStop(3);
}
按钮 3 上的代码:
on (press) {
gotoAndStop("s4_f1");
}
分别进入每个场景中,选种按钮添加代码:
on (press) {
gotoAndPlay("场景 1", 1);
}
在“场景 1”的第 1帧添加代码。
stop();
测试影片观看效果。
在“场景 1”中的三个按钮,分别用了参数的三种形式来练习,建议在使用时
最好用帧标签来跳转。
制作简易相册
本例的目的是为了练习跳转命令及上一课中学习过on命令。
效果说明:点击滚动按钮可以看到对应的图片,点击左边的按钮可以进行前一张
后一张的切换,并在动
1.新建一个 flash文档。设置文档属性为:宽 465、高 280,背景色白色。
2.导入素材,把本例的素材全部导入到库。
3.新建一个名为“图片”的影片剪辑元件,在此元件“图层 1”新插入 9 个空
白关键帧,分别在这 10 个关空白关键帧中依次分别放入库中的“tp1”~“tp10”
这 10 张图片,并居中对齐。
4.新建一个名为“按钮 1”的按钮元件,在按钮元件“图层 1”的弹起帧中,
从库时提进“tp1”位图,在属性面板里设置宽70、高 45,居中对齐。在“点击
帧”插入帧。插入“图层 2”在“图层 2”的弹起帧给制一个宽 70、高 45 的
无笔触的矩形,填充色为浅灰色,并把透明度调为 30%,在“鼠标经过” 帧插
入空白关键帧。5.用同样的方法制作另外 9 个按钮,大家可以用复制元件,替换图片的方法来
制作。
6.新建一个名为“按钮组”的影片剪辑元件,在其编辑区中,从库里提进“按
钮 1”~“按钮10” ,并用对齐面板排列成一横排,再把前 6 张复制后接在后
面。7.(1)新建一个名为“滚动图片”的影片剪辑元件, 在“图层 1”绘制一个宽
465、高 50 的无笔触的矩形框,填充色为淡紫色,并把透明度设为 30%。居中
对齐。
(2)插入“图层 2”在此图层的第 1 帧上,从库里提进“按钮组”影片剪辑元
件,并与下面的矩形条左对齐。 在第 100 帧插入关键帧, 并在些帧上把图片
按钮组向左移动,(移动多少要参照第 1 帧上的位置,确保循环播放时没有跳跃
的视觉感。)如下图所示。然后创建动画。
第 1 帧上的图片位置第 100 帧上的图片位置8. 新建一个名为 “蒙板” 的影片剪辑元件, 在其编辑区里绘制一个宽 287、 高 208
的无边框矩形,居中 对齐。填充色为四个色(这四个色自定)的状填充并把每
个色的透明度设为 45%左右。在第 10 帧插入关 键帧,在此帧上把各色的透明
度调为 0%。创建形状动画。并在最后一帧输入停止命令。
stop();
5 9.场景组装
(1)把场景“图层 1”更名为“背景” ,从库里提进“背景”图形元件居中对
齐。
(2)插入“图层 2”更名为“滚动菜单” 。从库里提进“滚动菜单”影片剪辑
元件,相对于场景,左 对齐、底对齐。并在属性面板里输入实例名“菜单” 。
(3)插入“图层 3”更名为“图片” ,从库时提进“图片”影片剪辑元件,放
在对应背的左上角的矩形框里。并在属性面板里输入实例名“图片” 。
(4)插入“图层 3”更名为“蒙板” ,从库时提进“蒙板”影片剪辑元件,放
在“图片”上,并在属性面板里输入实例名“蒙板” 。
(7)插入“图层 7” ,更名为“AS”
场景组装完毕
添加代码
(1)选中 AS 层的第 1帧,打字开动作面板,在动作面板中输入代码:
_root.mc.stop();
onEnterFrame = function () {
_root.a.text = _root.mc._currentframe;
};
(2)进入“按钮组”影片剪辑元件的编辑区,用选择工具选中“按钮 1” (最
左边的一个),打开动作 面板,在动作面板中输入代码:
on (rollOver) {
_root.菜单.stop();
}
on (release, rollOut) {
_root.菜单.play();
}
on (press) {
_root.图片.gotoAndStop(1);
_root.蒙板.play();
}
(3)把“按钮 1”上的语句复制粘贴到其它按钮上,然后把语名中的第 8 行
_root.mc.gotoAndStop(1);
改为“图片”元件中放图片的对应放图片的那一帧,例如按钮 5 上的语句应改
为:
on (rollOver) {
_root.菜单.stop();
}
on (release, rollOut) {
_root.菜单.play();
}
on (press) {
_root.图片.gotoAndStop(5)
_root.蒙板.play();
}
_root.蒙板.play();
}
实例制作完毕,大家测试景片,观看效果。