如何在 Flash AS3 中通过鼠标单击暂停多个符号
Posted
技术标签:
【中文标题】如何在 Flash AS3 中通过鼠标单击暂停多个符号【英文标题】:how to pause multiple symbols with mouse click in flash AS3 【发布时间】:2015-10-13 16:00:54 【问题描述】:我一直在使用 actionscript 3 来控制我的动画,
我可以播放和重置视频,但无法全局暂停。
一共有3个符号,
第一个父动画剪辑 带动画的第二个孩子moviclip-->我可以暂停这个。 第三个带有动画的子动画剪辑-->我无法暂停
脚本
包库
import flash.display.MovieClip;
import flash.events.*;
public class Controlstry extends MovieClip
public function Controlstry()
// constructor code
addEventListener(Event.ADDED_TO_STAGE,init);
private function init(evt=null)
if(video_mc != null)
playBtn.addEventListener(MouseEvent.MOUSE_DOWN, playVideo);
pauseBtn.addEventListener(MouseEvent.MOUSE_DOWN, pauseVideo);
replayBtn.addEventListener(MouseEvent.MOUSE_DOWN,replayVideo);
private function playVideo(evt:MouseEvent)
if(video_mc.currentFrame == video_mc.totalFrames)
video_mc.gotoAndPlay(2);
else
video_mc.play();
private function pauseVideo(evt:MouseEvent)
video_mc.stop();
private function replayVideo(evt:MouseEvent)
video_mc.gotoAndPlay(2);
【问题讨论】:
【参考方案1】:您的代码并不清楚您要控制的三个影片剪辑是什么。
假设您有 3 个相互嵌套的影片剪辑,您可以对它们中的每一个调用 stop() 来停止它们的动画(假设它们有时间轴动画)
所以如果你的结构是这样的:a-->b-->c,其中a是父级,b是a的子级,c是b的子级,你可以调用
a.stop();
a.b.stop();
a.b.c.stop();
这显然是假设您在 IDE 中为子属性声明了实例名称。
希望这会有所帮助。
编辑:
根据您发送的 FLA,您应该执行以下步骤来实现您想要的:
-
进入舞台上的 video_mc,选择第 9 层,并为其命名为“backgroundMC”。
像这样修改你的脚本:
package lib
import flash.display.MovieClip;
import flash.events.*;
public class Controlstry extends MovieClip
public function Controlstry()
// constructor code
addEventListener(Event.ADDED_TO_STAGE,init);
private function init(evt:Event=null)
if(video_mc != null)
playBtn.addEventListener(MouseEvent.CLICK, playVideo);
pauseBtn.addEventListener(MouseEvent.CLICK, pauseVideo);
replayBtn.addEventListener(MouseEvent.CLICK,replayVideo);
private function playVideo(evt:MouseEvent)
if(video_mc.currentFrame == video_mc.totalFrames)
video_mc.gotoAndPlay(2);
video_mc.backgroundMC.gotoAndPlay(1);
else
video_mc.play();
video_mc.backgroundMC.gotoAndPlay(1);
private function pauseVideo(evt:MouseEvent)
video_mc.stop();
video_mc.backgroundMC.gotoAndStop(1);
private function replayVideo(evt:MouseEvent)
video_mc.gotoAndPlay(2);
video_mc.backgroundMC.gotoAndPlay(1);
这里有几点需要注意:
-
如果您希望它响应单击事件,请使用 MouseEvent.CLICK。你曾经使用过 MouseEvent.DOWN
始终为事件提供类似 evt:Event 的类型,而不仅仅是 evt=null。
if(video_mc != null) 可以通过 if(video_mc) 轻松检查。
希望这能回答问题。
【讨论】:
不,我没有给里面的movieclip一个实例名称。 尝试给他们实例名称。就访问它们而言,它使生活变得更加轻松。 另外,在你的问题中更清楚地阐述你的问题。目前,您的脚本似乎与您的问题完全脱节。请详细说明。 filedropper.com/video_10,我上传了flash文件供参考,filedropper.com/controlstry还有as3脚本文件。 好的,详细解释一下,我想创建一个交互式 Flash 文件,其中有 3 个按钮,播放、暂停和重置以上是关于如何在 Flash AS3 中通过鼠标单击暂停多个符号的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Macromedia Flash MX 中通过使用 ActionScript 增加对象的坐标来移动对象?