您可以通过使用 play() 和 stop() 全局函数或者等效的 MovieClip 方法开始或停止播放 SWF 文件。例如,可以使用 stop() 在某一场景结束时,在继续播放下一场景之前停止播放 SWF 文件。SWF 文件停止播放后,必须通过调用 play() 或 gotoAndPlay() 来明确指示要重新开始播放。
可以使用 play() 和 stop() 函数或 MovieClip 方法来控制主时间轴,或任何影片剪辑或已加载 SWF 文件的时间轴。您要控制的影片剪辑必须有一个实例名称,而且必须显示在时间轴上。
以下附加到一个按钮的 on(press) 处理函数将在包含该按钮对象的 SWF 文件或影片剪辑中启动播放头移动:
代码如下 | 复制代码 |
// 附加到按钮实例 |
这个相同的 on() 事件处理函数代码在被附加到影片剪辑对象(而不是按钮)时将产生不同的结果。附加到按钮对象时,默认情况下,在 on() 处理函数内生成的语句将应用于包含该按钮的时间轴。不过,在附加到影片剪辑对象时,在 on() 处理函数内生成的语句将应用于附加了 on() 处理函数的影片剪辑。
例如,以下 onPress() 处理函数代码将停止附加了处理函数的影片剪辑的时间轴,而不是包含该影片剪辑的时间轴:
代码如下 | 复制代码 |
// 附加到 myMovie_mc 影片剪辑实例 |
相同情况适用于附加到影片剪辑对象的 onClipEvent() 处理函数。例如,以下代码在影片剪辑第一次加载时或在舞台上出现时,将停止那个包含 onClipEvent() 处理函数的影片剪辑的时间轴。
代码如下 | 复制代码 |
onClipEvent(load) { |
上面讲到的都是as2,如果你是as3的话我们可
可以通过侦听ENTER_FRAME事件,调用一个函数来检测这个影片剪辑的当前帧,例如影片剪辑名称为mc1,那么就检测这一时刻的mc1.currentFrame值与上一时刻的mc1.currentFrame 值是否一样,如果一样就是暂停的,如果不一样就是在播放
播放影片剪辑和停止回放
play() 和 stop() 方法允许对时间轴上的影片剪辑进行基本控制。例如,假设舞台上有一个影片剪辑元件,其中包含一个自行车横穿屏幕的动画,其实例名称设置为 bicycle。如果将以下代码附加到主时间轴上的关键帧,
bicycle.stop();自行车将不会移动(将不播放其动画)。自行车的移动可以通过其它某种用户交互来开始。例如,如果您有一个名为 startButton 的按扭,则主时间轴上某一关键帧上的以下代码会使单击该按扭时播放该动画:
代码如下 | 复制代码 |
// This function will be called when the button is clicked. It causes the // bicycle animation to play. function playAnimation(event:MouseEvent):void { bicycle.play(); } // Register the function as a listener with the button. startButton.addEventListener(MouseEvent.CLICK, playAnimation); |
快进和后退
在影片剪辑中,play() 和 stop() 方法并非是控制播放的唯一方法。也可以使用 nextFrame() 和 prevFrame() 方法手动向前或向后沿时间轴移动播放头。调用这两种方法中的任一方法均会停止回放并分别使播放头向前或向后移动一帧。
使用 play() 方法类似于每次触发影片剪辑对象的 enterFrame 事件时调用 nextFrame()。使用此方法,您可以为 enterFrame 事件创建一个事件侦听器并在侦听器函数中让 bicycle 回到前一帧,从而使 bicycle 影片剪辑向后播放,如下所示:
代码如下 | 复制代码 |
// This function is called when the enterFrame event is triggered, meaning // it's called once per frame. function everyFrame(event:Event):void { if (bicycle.currentFrame == 1) { bicycle.gotoAndStop(bicycle.totalFrames); } else { bicycle.prevFrame(); } } bicycle.addEventListener(Event.ENTER_FRAME, everyFrame); |
在正常回放过程中,如果影片剪辑包含多个帧,播放时将会无限循环播放,也就是说在经过最后一帧后将返回到第 1 帧。使用 prevFrame() 或 nextFrame() 时,不会自动发生此行为(在播放头位于第 1 帧时调用 prevFrame() 不会将播放头移动到最后一帧)。以上示例中的 if 条件将检查播放头是否已返回至第一帧,并将播放头设置为处于最后一帧前面,从而有效地使影片剪辑向后持续循环播放。