如何在 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 增加对象的坐标来移动对象?

如何在 Flash AIR 和 AS3 中使用触控?

需要在 Flash CS3 AS3 中创建暂停/恢复切换按钮

Flash AS3 在特定帧上停止声音

单击按钮时如何删除组合框组件 flash as3

在 Three.JS 中通过鼠标单击选择 Collada 对象