如何在 Flash AS3 中用鼠标单击暂停多个符号

how to pause multiple symbols with mouse click in flash AS3

我一直在使用 actionscript 3 来控制我的动画,

我可以播放和重置视频,但无法全局暂停。

一共有3个符号,

第一个父级动画片段 第二个带有动画的子动画片段 --> 我可以暂停它。 带动画的第 3 个子动画片段 --> 我无法暂停此

脚本

包库{

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);
    }
}   

}

从您的代码中看不太清楚您要控制的三个影片剪辑是什么。

假设您有 3 个相互嵌套的影片剪辑,您可以对每个影片剪辑调用 stop() 来停止它们的动画(假设它们有时间轴动画)

因此,如果您的结构如下所示:a-->b-->c,其中 a 是父级,b 是 a 的子级,c 是 b 的子级,您可以调用

a.stop(); 
a.b.stop(); 
a.b.c.stop();

这显然是假设您在 IDE 中为子属性声明了实例名称。

希望这对您有所帮助。

编辑:

根据您发送的 FLA,您应该执行以下步骤来实现您想要的:

  1. 进入你舞台上的 video_mc 和 select 第 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);

        }
    }   
}

这里有几点需要注意:

  1. 如果您希望它响应点击事件,请使用MouseEvent.CLICK。您使用了 MouseEvent.DOWN
  2. 总是给事件一个类似 evt:Event 的类型,而不仅仅是 evt=null。
  3. if(video_mc != null) 可以通过 if(video_mc).
  4. 轻松检查

希望这能回答问题。