在flash中加载swf及其文件的方法1

上传人:xiao****1972 文档编号:84196002 上传时间:2019-03-03 格式:DOC 页数:22 大小:71KB
返回 下载 相关 举报
在flash中加载swf及其文件的方法1_第1页
第1页 / 共22页
在flash中加载swf及其文件的方法1_第2页
第2页 / 共22页
在flash中加载swf及其文件的方法1_第3页
第3页 / 共22页
在flash中加载swf及其文件的方法1_第4页
第4页 / 共22页
在flash中加载swf及其文件的方法1_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《在flash中加载swf及其文件的方法1》由会员分享,可在线阅读,更多相关《在flash中加载swf及其文件的方法1(22页珍藏版)》请在金锄头文库上搜索。

1、动画制作技巧:如何加载外部SWF文件一、控制影片剪辑影片剪辑是Flash中最重要的一种元件,对影片剪辑的控制是ActionScript的最重要功能之一。从根本上说,Flash的许多复杂动画效果和交互功能都与影片剪辑的运用密不可分。使用点语法或方括号可以定位影片剪辑。使用方括号时可以使用由变量表示的影片剪辑实例名,这是它相对于点语法的优点。可以用脚本控制影片剪辑的各种动作,也可以在影片剪辑的事件处理函数中控制主时间轴和别的影片剪辑。影片剪辑最重要的两个事件是load和enterFrame。 1控制影片剪辑的播放动作设想一个Flash动画,它的主场景中只有一个帧,舞台中只有一个影片剪辑,影片剪辑中

2、并没有ActionScript。如何才能控制影片剪辑的播放动作呢?要控制一个影片剪辑,首先应该为影片剪辑命名。容易混淆的是,库面板中的影片剪辑本身有一个名称,这里要命名的是场景中影片剪辑实例的名称。它们可以相同,也可以不相同。如果你在场景中创建了同样的影片剪辑的多个实例,那么就需要将每个实例以不同的名称命名,才能用ActionScript对每一个实例进行控制。如果不需要对影片剪辑进行控制,也就不需要为影片剪辑的实例命名。从本例文件中,你将看到库面板中只有一个影片剪辑rollmc,场景中创建了一个rollmc的实例。你还可以再从库中拖出若干个rollmc的实例将它们放置到场景中。选中场景中影片剪

3、辑rollmc的实例,打开属性面板,可以看到它被命名为roll,你同时可以看到该影片剪辑原来的名字rollmc,如图5-1所示。你也可以为它指定别的名称,也可以是rollmc,Flash并不会混淆它们之间的区别。实例名称可以在程序中用来指代该影片剪辑实例,如果要控制该实例,就需要在脚本中使用该名称。下面,我们就来看看如何通过脚本控制影片剪辑实例roll。分别选中场景中的4个按钮,打开它们的动作面板,查看其中的代码。“STOP”按钮:on (release) roll.stop();单击“STOP”按钮使roll实例停止播放。“PLAY”按钮:on (release) roll.play();单

4、击“PLAY”按钮使roll实例继续播放。“PREV”按钮:on (release) roll.prevFrame();单击“PREV”按钮使roll实例回退一帧并停止。“NEXT”按钮:on (release) roll.nextFrame();单击“NEXT”按钮使roll实例播放一帧并停止。按Ctrl+Enter键测试影片,如图5-2所示。一开始影片剪辑自动播放。单击不同的按钮看看影片剪辑是否执行相应的动作。除了这几种命令,你还可以使用gotoAndStop或gotoAndPlay命令控制影片剪辑跳转到具体的帧,但是在命令前面都需要指定影片剪辑的实例名称。这种方法是在影片剪辑实例所在的层

5、级中控制影片剪辑,如果是在影片剪辑内部,要控制它自身的播放,就可以直接使用stop、play等命令,而不需要指定实例名称。如果你在影片剪辑内部的时间轴中使用了名称roll,Flash会在影片剪辑内部的时间轴中寻找该实例。2定位影片剪辑我们已经了解了如何使用最简单的方法定位一个影片剪辑,即使用影片剪辑的实例名,后面紧跟一个点记号“.”,然后是你想要影片剪辑执行的命令。还有许多方法可以定位影片剪辑。首先,我们来看看如何定位Flash影片中不同层级的对象。Flash影片中最基本的目标层级就是它的主时间轴。可以用关键字_root来表示和定位主时间轴。例如,你要向主时间轴发送一个gotoAndStop命

6、令,可以使用如下所示的语句:_root.gotoAndStop(9); 如果这个命令是包含在主时间轴的某一帧上的,则可以省略目标_root。如果这个命令是包含在主时间轴上某个影片剪辑中,需要由影片剪辑来控制它上一级的主时间轴,_root就很有必要了。通常,要定位包含某一对象的上一级对象,可以使用关键字_parent。所以,如果一个影片剪辑是包含在主时间轴中,在影片剪辑中使用_parent和_root的效果是一样的。如果影片剪辑与主时间轴相差两个层级,即当影片剪辑包含在另一个位于主时间轴中的影片剪辑中,这时在该影片剪辑中使用_parent指代的是它上一级的影片剪辑,而_root是指它上两级的主时

7、间轴。在主时间轴中不能使用_parent,因为主时间轴没有上一级。 可以用数字来方便地说明这种层级关系。主时间轴,它始终是最初级,作为层级0。主时间轴中的一个影片剪辑处于层级1。如果影片剪辑中包含另一个影片剪辑,它处于层级2。对层级2上的影片剪辑来说,_parent指代的就是层级1上的影片剪辑,而不管对哪一级来说,_root始终指代层级0上的主时间轴。 除了用点记号连接_root和实例名,还可以使用方括号表示_root上的对象。对上例中的按钮“stop”来说,如下所示的3种方法作用是一样的:rool.stop();_root.roll.stop();_rootroll.stop(); 还有一个

8、关键字this,它代表脚本当前所在的层级。如果脚本位于主时间轴中,this即指代主时间轴;如果脚本位于影片剪辑中,this即指代该影片剪辑。所以以上语句还可以用以下两种方式表示:this.roll.stop();thisroll.stop(); 使用_root和this时还可以用变量来定位影片剪辑,如下所示:var mcInsName = roll;_rootmcInsName.stop(); 今后我们会遇到这种情况,即有roll0rool99共100个影片剪辑实例,可以使用下面的语句来控制它们:on (release) for (var i = 0; i100; i+) _rootroll+

9、i.stop(); 多数情况下我们习惯使用_root,但在某些情况下使用this比_root更简便。如要在某个影片剪辑中定位包含 在此影片剪辑中的另一影片剪辑childMC,就可以直接使用this.childMC。3为影片剪辑添加脚本现在你已经知道如何向帧和按钮中添加脚本,下面需要知道如何向影片剪辑中添加脚本。 要为影片剪辑添加脚本,首先要选中影片剪辑,再打开它对应的动作面板,然后在其中输入脚本。影片剪辑脚本和按钮的脚本类似,它们都使用事件处理函数,与按钮的on关键字不同,影片剪辑使用onClipEvent关键字。当某种影片剪辑事件发生时,就会触发相应的事件处理函数。 影片剪辑最重要的两种事件

10、是load和enterFrame。load事件在影片剪辑完全加载到内存中时发生。在每次播放Flash影片时,每个影片剪辑的load事件只发生一次。在主时间轴停止播放时,影片中的影片剪辑并不会停止播放,这个特性决定了影片剪辑的另一个事件enterFrame的重要性。enterFrame事件在影片每次播放到影片剪辑所在帧时发生。如果主时间轴中只有一帧,且不论它是否在该帧停止,该帧中的影片剪辑都会不断触发enterFrame事件,且触发的频率与Flash影片的帧频一致。影片剪辑事件的使用方法如下所示:onClipEvent (load) var i = 0;onClipEvent (enterFra

11、me) trace(i);i+;当影片剪辑的load事件发生时,将变量i设置为0。当影片剪辑的enterFrame事件发生时,向输出窗口中发送i的值,然后将i加1。输出窗口中会从0开始输出以1递增的数字序列,直到影片被关闭为止。为了熟悉影片剪辑事件处理函数的用法,我们来为影片剪辑编写一段简单的脚本,使影片剪辑逆序播放, 我们将从影片剪辑的最后一帧处开始播放,使用prevFrame命令使影片剪辑每次后退一帧。 本例文件场景中有一个影片剪辑元件rollmc,查看一下它的属性面板,并没有为其实例命名,这是因为我们要直接在影片剪辑的动作面板中添加脚本,并不需要用到实例名称。 选中影片剪辑rollmc,

12、此时动作面板的标题栏中应为“动作-影片剪辑”。打开动作面板,其中添加了如下ActionScript:onClipEvent (load) gotoAndStop(40);onClipEvent (enterFrame) prevFrame(); 在事件处理函数onClipEvent (load)中,令Flash影片的播放头转到影片剪辑的第40帧(即最后一帧)。这个事件处理函数只在影片剪辑被加载完成时执行1次。第2个事件处理函数onClipEvent (enterFrame)每播放1帧就执行1次,使影片剪辑回退1帧。 按Ctrl+Enter键测试影片,你将看到齿轮以与上例相反的方向转动,直到影片

13、剪辑的时间轴回到第1帧,prevFrame命令不起作用,影片剪辑停止播放。要让它连续不断的播放,可以在影片剪辑元件rollmc的时间轴第1帧的动作面板中添加如下语句:gotoAndStop(40);4 用影片剪辑控制别的影片剪辑一个影片剪辑可以控制别的影片剪辑。综合使用_root或_parent关键字、点符号和影片剪辑实例名称可以将命令发送给另一个影片剪辑实例。例如,在主时间轴上的影片剪辑实例roll1中添加如下脚本以控制同在主时间轴上的影片剪辑实例roll2回退1帧:_root.roll2.prevFrame();或者使用方括号表示如下:_rootroll2.prevFrame(); 如果两

14、个影片剪辑不同在主时间轴上,而是同在别的层级上,可以使用_parent关键字。如果它们不同在一个层级上,也只需要使用点符号逐级标明所在的路径即可。 下面综合运用以上知识实现以影片剪辑控制另一个剪辑的播放动作。(1)打开本例文件。分别查看场景中的每一层。按Ctrl+L打开库面板。库面板中有三个影片剪辑元件,分别是hour、minute和second。(2)分别双击每个影片剪辑元件,查看它们的时间轴。(3)second元件的的时间轴共60帧,secondhand图形元件顺时针旋转1周。在第1帧中添加了如下ActionScript:stop();在最后1帧中添加了如下ActionScript:_ro

15、ottarget.nextFrame();gotoAndStop(1);(4)minute元件的的时间轴共60帧,minutehand图形元件顺时针旋转1周。在第1帧中添加了如下ActionScript:stop();在最后1帧中添加了如下ActionScript:_roottarget.nextFrame();gotoAndStop(1);(5)hour元件的的时间轴共12帧,hourhand图形元件顺时针旋转1周。在第1帧中添加了如下ActionScript:stop();(6)回到主场景,在属性面板中为hour影片剪辑和minute影片剪辑指定了与元件名称相同的实例名称。(7)选中second元件实例,打开其动作面板,其中添加了如下ActionScript:onClipEvent (load) target = minute;onClipEvent (enterFrame) nextFrame();(8)选中minute元件实例,打开其动作面板,其中添加了如下ActionScript:onClipEvent (load) target = hour;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号