现在的位置: 首页 > 综合 > 正文

怎么在FLASH的场景中控制影片剪辑的播放和停止

2013年09月17日 ⁄ 综合 ⁄ 共 3125字 ⁄ 字号 评论关闭

怎么在FLASH的场景中控制影片剪辑的播放和停止

悬赏分:5 - 提问时间2008-4-9 13:27 问题为何被关闭
主要是想问FLASH中的影片剪辑的停止
我做了多个影片然后又做了一些按钮,每个按钮控制相应的影片剪辑
例如,做了3个影片剪辑名字分别是1,2,3然后又做了三个按钮,名字分别是A,B ,C    按钮A控制影1,B控制2,C控制3,点击按钮播放相应的影片剪,播放到影片剪辑的最后一帧停止,(前提是不对影片剪辑做任何操作的时候,就不能播放其他帧)希望能有高手指教!
急用,越快越好! 
 
 
1、将影片剪辑的第一帧和最后一帧都加stop()
2、为影片剪辑1拖到场景后起个名称a1
3、在a按钮中加入
on (release) {
 _root.a1.play()
} 
控制影片剪辑 
影片剪辑是Flash中最重要的一种元件,对影片剪辑的控制是ActionScript的最重要功能之一。从根本上说,Flash的许多复杂动画效果和交互功能都与影片剪辑的运用密不可分。
使用点语法或方括号可以定位影片剪辑。使用方括号时可以使用由变量表示的影片剪辑实例名,这是它相对于点语法的优点。
可以用脚本控制影片剪辑的各种动作,也可以在影片剪辑的事件处理函数中控制主时间轴和别的影片剪辑。影片剪辑最重要的两个事件是load和enterFrame。
控制影片剪辑的播放动作
设想一个Flash动画,它的主场景中只有一个帧,舞台中只有一个影片剪辑,影片剪辑中并没有ActionScript。如何才能控制影片剪辑的播放动作呢?
要控制一个影片剪辑,首先应该为影片剪辑命名。容易混淆的是,库面板中的影片剪辑本身有一个名称,这里要命名的是场景中影片剪辑实例的名称。它们可以相同,也可以不相同。如果你在场景中创建了同样的影片剪辑的多个实例,那么就需要将每个实例以不同的名称命名,才能用ActionScript对每一个实例进行控制。如果不需要对影片剪辑进行控制,也就不需要为影片剪辑的实例命名。
从本例文件中,你将看到库面板中只有一个影片剪辑rollmc,场景中创建了一个rollmc的实例。你还可以再从库中拖出若干个rollmc的实例将它们放置到场景中。
选中场景中影片剪辑rollmc的实例,打开属性面板,可以看到它被命名为roll,你同时可以看到该影片剪辑原来的名字rollmc,如图5-1所示。你也可以为它指定别的名称,也可以是rollmc,Flash并不会混淆它们之间的区别。
 

首先,为影片剪辑实例命名
实例名称可以在程序中用来指代该影片剪辑实例,如果要控制该实例,就需要在脚本中使用该名称。下面,我们就来看看如何通过脚本控制影片剪辑实例roll。
分别选中场景中的4个按钮,打开它们的动作面板,查看其中的代码。
“STOP”按钮:
on (release) {
 roll.stop();
}
单击“STOP”按钮使roll实例停止播放。
“PLAY”按钮:
on (release) {
 roll.play();
}
单击“PLAY”按钮使roll实例继续播放。
“PREV”按钮:
on (release) {
 roll.prevFrame();
}
单击“PREV”按钮使roll实例回退一帧并停止。
“NEXT”按钮:
on (release) {
 roll.nextFrame();
}
单击“NEXT”按钮使roll实例播放一帧并停止。
按Ctrl+Enter键测试影片,一开始影片剪辑自动播放。单击不同的按钮看看影片剪辑是否执行相应的动作。

除了这几种命令,你还可以使用gotoAndStop或gotoAndPlay命令控制影片剪辑跳转到具体的帧,但是在命令前面都需要指定影片剪辑的实例名称。
 这种方法是在影片剪辑实例所在的层级中控制影片剪辑,如果是在影片剪辑内部,要控制它自身的播放,就可以直接使用stop、play等命令,而不需要指定实例名称。如果你在影片剪辑内部的时间轴中使用了名称roll,Flash会在影片剪辑内部的时间轴中寻找该实例。

如何定位影片剪辑

我们已经了解了如何使用最简单的方法定位一个影片剪辑,即使用影片剪辑的实例名,后面紧跟一个点记号“.”,然后是你想要影片剪辑执行的命令。
还有许多方法可以定位影片剪辑。首先,我们来看看如何定位Flash影片中不同层级的对象。
Flash影片中最基本的目标层级就是它的主时间轴。可以用关键字_root来表示和定位主时间轴。
例如,你要向主时间轴发送一个gotoAndStop命令,可以使用如下所示的语句:
_root.gotoAndStop(9);
如果这个命令是包含在主时间轴的某一帧上的,则可以省略目标_root。如果这个命令是包含在主时间轴上某个影片剪辑中,需要由影片剪辑来控制它上一级的主时间轴,_root就很有必要了。
通常,要定位包含某一对象的上一级对象,可以使用关键字_parent。所以,如果一个影片剪辑是包含在主时间轴中,在影片剪辑中使用_parent和_root的效果是一样的。如果影片剪辑与主时间轴相差两个层级,即当影片剪辑包含在另一个位于主时间轴中的影片剪辑中,这时在该影片剪辑中使用_parent指代的是它上一级的影片剪辑,而_root是指它上两级的主时间轴。在主时间轴中不能使用_parent,因为主时间轴没有上一级。
可以用数字来方便地说明这种层级关系。主时间轴,它始终是最初级,作为层级0。主时间轴中的一个影片剪辑处于层级1。如果影片剪辑中包含另一个影片剪辑,它处于层级2。对层级2上的影片剪辑来说,_parent指代的就是层级1上的影片剪辑,而不管对哪一级来说,_root始终指代层级0上的主时间轴。
除了用点记号连接_root和实例名,还可以使用方括号表示_root上的对象。对上例中的按钮“STOP”来说,如下所示的3种方法作用是一样的:
rool.stop();
_root.roll.stop();
_root["roll"].stop();
还有一个关键字this,它代表脚本当前所在的层级。如果脚本位于主时间轴中,this即指代主时间轴;如果脚本位于影片剪辑中,this即指代该影片剪辑。所以以上语句还可以用以下两种方式表示:
this.roll.stop();
this["roll"].stop();
使用_root和this时还可以用变量来定位影片剪辑,如下所示:
var mcInsName = "roll";
_root[mcInsName].stop();
今后我们会遇到这种情况,即有roll0~rool99共100个影片剪辑实例,可以使用下面的语句来控制它们:
on (release) {
 for (var i = 0; i<100; i++) {
  _root["roll"+i].stop();
 }
}
多数情况下我们习惯使用_root,但在某些情况下使用this比_root更简便。如要在某个影片剪辑中定位包含 在此影片剪辑中的另一影片剪辑childMC,就可以直接使用this.childMC。 
第一步  你在  1、2、3的影片剪辑第一帧和最后一帧都写上 stop(); 命令,在场景中命名为a1,a2,a3,这样影片剪辑就不会自动播放,如果播放,到最后一帧就会停止。
现在就只需要加上控制他们的命令了。

第二步  在按钮上写上命令   如果按钮和影片剪辑是同级,就用this,如果不是同级,推荐你使用脚本上面那个像瞄准镜一样的小圆框,可以自动找到影片剪辑,以下我用this 做命令示范。

on(release){
this.a1.gotoAndPlay(2);
}

上面的命令就是 当点击释放此按钮时(写命令的那个按钮),影片剪辑1就会从第二帧开始播放。由于你在影片剪辑最后以帧写了stop(); 所以放到最后一帧就自动停止了。

上面是很简单的方法  很容易理解  
 
 

抱歉!评论已关闭.