Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 3340330
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 18, 20262026-05-18T00:35:43+00:00 2026-05-18T00:35:43+00:00

I have this MouseEvent function that I have totally no idea why it fired

  • 0

I have this MouseEvent function that I have totally no idea why it fired twice. Is there a way I can disable the function in a period of time? I tried disabling the button, but seems like it directly called the function and does not trigger from the button.

Addition info:When I add in more object to the array, the function fired more time

The Class the handles the button

 package classes
{
    import flash.display.MovieClip;
    import flash.events.Event;
    import flash.events.MouseEvent;
    import flash.geom.Rectangle;

    import classes.playVideo;
    import classes.playList;
    import classes.viewType;

    public class controlMenu extends MovieClip
    {
        private var playV:playVideo=new playVideo();
        private var list:playList=new playList();
        private var viewT:viewType = new viewType();

        private static var con:controls = new controls();

        private static var _buttonStatus:Boolean;

        public function controlMenu()
        {
        }

        //-------------------------------------------------------------

        public function loadControlMenu():void
        {
            this.addEventListener(Event.ADDED_TO_STAGE,add2Stage);
        }

        private function add2Stage(e:Event):void
        {
            if (stage.numChildren == 1)
            {
                con.x=(stage.stageWidth-230)/2;
                con.y=stage.stageHeight-(con.height+9);
                addChild(con);

                playButtonStatus();

                con.soundBtn.addEventListener(MouseEvent.MOUSE_OVER, soundOver);
                con.soundBtn.addEventListener(MouseEvent.MOUSE_OUT, soundOut);
                con.soundBtn.addEventListener(MouseEvent.MOUSE_DOWN, soundDown);
                stage.addEventListener(MouseEvent.MOUSE_UP, soundUp);

                con.prev.addEventListener(MouseEvent.CLICK,prevClick);
                con.next.addEventListener(MouseEvent.CLICK,nextClick);
            }
        }

        private function playClick(e:MouseEvent):void
        {
            if (e.currentTarget.currentFrameLabel == "play" && playV.currentVideoStatus == "play")
            {
                e.currentTarget.gotoAndStop("pause");
                playV.pauseStatus();
            }
            else if (e.currentTarget.currentFrameLabel=="pause" && playV.currentVideoStatus == "pause")
            {
                e.currentTarget.gotoAndStop("play");
                playV.playStatus();
            }
            else if (e.currentTarget.currentFrameLabel == "play"&& playV.currentVideoStatus == "end")
            {
                playV.newVideo = "video/video" + list.currentIndex + ".flv";
            }
        }

        private function playOver(e:MouseEvent):void
        {
            e.currentTarget.btn.gotoAndStop("over");
        }

        private function playOut(e:MouseEvent):void
        {
            e.currentTarget.btn.gotoAndStop("out");
        }

        //-------------------------------------------------------------

        private function soundOver(e:MouseEvent):void
        {
            e.currentTarget.gotoAndStop("over");
        }

        private function soundOut(e:MouseEvent):void
        {
            if (e.buttonDown == false)
            {
                e.currentTarget.gotoAndStop("out");
            }
        }

        private function soundDown(e:MouseEvent):void
        {
            var volumeBound:Rectangle = new Rectangle(-93,35,80,0);
            e.currentTarget.startDrag(false, volumeBound);

            stage.addEventListener(MouseEvent.MOUSE_MOVE,soundAdjust);
        }

        private function soundUp(e:MouseEvent):void
        {
            con.soundBtn.stopDrag();
            con.soundBtn.gotoAndStop("out");

            stage.removeEventListener(MouseEvent.MOUSE_MOVE,soundAdjust);
        }

        private function soundAdjust(e:MouseEvent):void
        {
            playV.adjustSound = ((con.soundBtn.x+93)*100)/80;
        }

        public function set adjustSoundBtnPos(a:Number):void
        {
            var newPos:Number = ((80*a)/100);
            con.soundBtn.x = newPos - 93;
        }

        private function prevClick(e:MouseEvent):void
        {
            if (viewT.viewIn == "stream" && list.currentIndex > 1)
            {
                var goBack = list.currentIndex - 1;
                list.currentIndex = goBack;
                playV.newVideo = "video/video" + goBack + ".flv";
                list.currentVideoLink = goBack;
            }
        }

        private function nextClick(e:MouseEvent):void
        {
            if (viewT.viewIn == "stream" && list.currentIndex < list.vDataLength)
            {
                var goNext = list.currentIndex + 1;
                list.currentIndex = goNext;
                playV.newVideo = "video/video" + goNext + ".flv";
                list.currentVideoLink = goNext;
            }
        }

        //-------------------------------------------------------------

        public function get currentStatus():String
        {
            return con.playBtn.currentFrameLabel;
        }

        public function resetPlayStatus():void
        {
            con.playBtn.gotoAndStop("play");
        }

        //-------------------------------------------------------------

        public function set buttonStatus(s:Boolean):void
        {
            _buttonStatus = s;
            playButtonStatus();
        }

        public function playButtonStatus():void
        {
            if (_buttonStatus == true)
            {
                con.playBtn.buttonMode = true;
                con.playBtn.addEventListener(MouseEvent.CLICK, playClick);
                con.playBtn.addEventListener(MouseEvent.MOUSE_OVER, playOver);
                con.playBtn.addEventListener(MouseEvent.MOUSE_OUT, playOut);

                con.soundBtn.buttonMode = true;
                con.soundBtn.mouseEnabled = true;
            }
            else
            {
                con.playBtn.buttonMode = false;
                con.playBtn.removeEventListener(MouseEvent.CLICK, playClick);
                con.playBtn.removeEventListener(MouseEvent.MOUSE_OVER, playOver);
                con.playBtn.removeEventListener(MouseEvent.MOUSE_OUT, playOut);

                con.soundBtn.buttonMode = false;
                con.soundBtn.mouseEnabled = false;
            }
        }
    }
}

The Class that cause the extra loop on mouseevent function

 package classes
{
    import flash.media.Video;
    import flash.display.MovieClip;
    import flash.net.NetConnection;
    import flash.net.NetStream;
    import flash.events.AsyncErrorEvent;
    import flash.events.TimerEvent;
    import flash.events.Event;
    import flash.utils.Timer;
    import flash.text.TextField;
    import flash.text.TextFormat;
    import flash.media.SoundTransform;
    import flash.media.SoundMixer;
    import flash.net.URLLoader;
    import flash.net.URLRequest;


    import classes.Playing;
    import classes.progressBar;
    import classes.controlMenu;
    import classes.viewType;
    import classes.downloadVideo;
    import classes.playList;
    import classes.playVideo;

    public class playVideo extends MovieClip
    {
        private var Play:Playing = new Playing();
        private var progressB:progressBar = new progressBar();
        private var conM:controlMenu;
        private var viewT:viewType=new viewType();
        private var downloadV:downloadVideo;
        private var list:playList;
        private var vBox:MovieClip = new MovieClip();

        private var nc:NetConnection;
        private static var ns:NetStream;
        private const buffer:Number = 2;
        private static var videoURL:String;
        private static var vid:Video = new Video();

        private static var meta:Object = new Object();
        private var durationSecs:Number;
        private var durationMins:Number;
        private var durSecsDisplay:String;
        private var durMinsDisplay:String;
        private static var videoDuration:String;

        private static var t:Timer = new Timer(100);

        private static var videoSound:SoundTransform = new SoundTransform();

        private var arial:Arial = new Arial();
        private static var durationTxt:TextField=new TextField();
        private var durationTxtF:TextFormat=new TextFormat();

        private var scrubForward:Boolean;
        private static var currentStatus;

        private static var nsArray:Array= new Array();
        private var dummyArray:Array = new Array();


        //--------------------------------------------------------------------------

        private var videoLoader:URLLoader;

        public function playVideo()
        {
        }

        public function set newVideo(v:String):void
        {
            currentStatus = "play";
            videoURL = v;

            if (viewT.viewIn == "stream")
            {
                addVideo();
            }
            else if (viewT.viewIn=="download")
            {
                for (var i:uint=0; i<nsArray.length; i++)
                {
                    if (nsArray[i] != null)
                    {
                        nsArray[i].close();
                    }
                }
                videoProperties();
                soundF();
            }
            conM.resetPlayStatus();
        }

        public function videoFunction():void
        {
            vBox.graphics.beginFill(0x000000);
            vBox.graphics.drawRect(0,36,668,410);
            vBox.graphics.endFill();
            addChild(vBox);

            // Add the instance of vid to the stage
            vid.width = vid.width * 2;
            vid.height = vid.height * 1.5;
            vid.x = vBox.width / 2 - vid.width / 2;
            vid.y = vBox.height / 2 - vid.height / 2 + 36;
            vBox.addChild(vid);

            if (viewT.viewIn == "stream")
            {
                videoProperties();
            }

            soundF();
            durationText();
        }

        public function videoProperties():void
        {
            nc=new NetConnection();

            // Assign variable name for Net Connection 
            nc.connect(null);

            // Assign Var for the NetStream Object using NetConnection
            ns = new NetStream(nc);

            // Add the buffer time to the video Net Stream
            ns.bufferTime = buffer;

            // Set client for Meta Data Function
            ns.client = {};
            ns.client.onMetaData = onMetaData;

            // Attach netStream to our new Video Object
            if (viewT.viewIn == "stream")
            {
                vid.attachNetStream(ns);
            }
            else if (viewT.viewIn == "download")
            {
                nsArray[list.currentIndex - 1] = ns;
                dummyArray.push(ns);
                vid.attachNetStream(ns);
            }

            addVideo();
        }

        private function addVideo():void
        {
            // Assign NetStream to start play automatically by default
            if (viewT.viewIn == "stream" && videoURL == null)
            {
                videoURL = "video/video1.flv";
            }

            ns.play(videoURL);

            conM= new controlMenu();
            conM.buttonStatus = true;
            progressB.progressBarStatus();

            // Add Error listener and listeners for all of our buttons
            ns.addEventListener(AsyncErrorEvent.ASYNC_ERROR,asyncErrorHandler);

            currentStatus = "play";

            t.addEventListener(TimerEvent.TIMER,onTick);
            t.start();
        }

        private function asyncErrorHandler(event:AsyncErrorEvent):void
        {
            // Do whatever you want if an error arises
        }

        private function onMetaData(info:Object):void
        {
            meta = info;
            /*for (meta in info)
            {
            trace(meta + ":" + info[meta]);
            }*/

            durationSecs = Math.floor(meta.duration);
            durationMins = Math.floor(durationSecs / 60);
            durationMins %=  60;
            durationSecs %=  60;

            if (durationMins < 10)
            {
                durMinsDisplay = "0" + durationMins;
            }
            else
            {
                durMinsDisplay = "" + durationMins;
            }

            if (durationSecs < 10)
            {
                durSecsDisplay = "0" + durationSecs;
            }
            else
            {
                durSecsDisplay = "" + durationSecs;
            }

            videoDuration = durMinsDisplay + ":" + durSecsDisplay;
            Play.vDuration = videoDuration;
        }

        //--------------------------------------------------------------------------

        public function prepareArray():void
        {
            list = new playList();

            for (var i:uint=0; i<list.vDataLength; i++)
            {
                nsArray.push(null);
            }
        }

        //--------------------------------------------------------------------------

        private function onTick(event:TimerEvent):void
        {
            if (viewT.viewIn == "stream" || ns.bytesLoaded == ns.bytesTotal)
            {
                var nsSecs:Number = Math.floor(ns.time);
                var nsMins:Number = Math.floor(nsSecs / 60);

                nsMins %=  60;
                nsSecs %=  60;

                var nsSecsDisplay:String = "";
                var nsMinsDisplay:String = "";
                if (nsMins < 10)
                {
                    nsMinsDisplay = "0" + nsMins;
                }
                else
                {
                    nsMinsDisplay = "" + nsMins;
                }
                if (nsSecs < 10)
                {
                    nsSecsDisplay = "0" + nsSecs;
                }
                else
                {
                    nsSecsDisplay = "" + nsSecs;
                }

                durationTxt.text = nsMinsDisplay + ":" + nsSecsDisplay;
                progressB.progressing = ns.time / meta.duration * 668;
            }
            else if (viewT.viewIn=="download" && ns.bytesLoaded!=ns.bytesTotal)
            {
                list.preloadFlv();
            }

            if (durationTxt.text == videoDuration)
            {
                currentStatus = "end";
                t.stop();
                t.removeEventListener(TimerEvent.TIMER,onTick);
                ns.pause();
                ns.seek(0);
            }
        }

        //--------------------------------------------------------------------------

        private function soundF():void
        {
            var soundAmount:Number = 7;
            if (viewT.viewIn == "stream")
            {
                ns.soundTransform = videoSound;
                videoSound.volume = soundAmount / 10;
                conM.adjustSoundBtnPos = soundAmount * 10;
            }
            else if (viewT.viewIn=="download")
            {
                if (dummyArray.length == 1 && ns != null)
                {
                    ns.soundTransform = videoSound;
                    videoSound.volume = soundAmount / 10;
                    conM.adjustSoundBtnPos = soundAmount * 10;
                }
                else if (dummyArray.length> 1 && ns!=null)
                {
                    ns.soundTransform = videoSound;
                }
            }
        }

        public function set adjustSound(s:Number):void
        {
            videoSound.volume = s / 100;
            ns.soundTransform = videoSound;
        }

        //--------------------------------------------------------------------------

        private function durationText():void
        {
            durationTxtF = new TextFormat();
            durationTxtF.size = 12;
            durationTxtF.leftMargin = 5;
            durationTxtF.font = arial.fontName;

            durationTxt.defaultTextFormat = durationTxtF;
            durationTxt.selectable = false;
            durationTxt.textColor = 0x999999;
            durationTxt.width = 50;
            durationTxt.height = 22;
            durationTxt.x = 476;
            durationTxt.y = 477;
            durationTxt.text = "00:00";
            addChild(durationTxt);
        }

        //--------------------------------------------------------------------------

        public function get Duration():String
        {
            return videoDuration;
        }

        public function playStatus():void
        {
            conM=new controlMenu();
            if (conM.currentStatus == "play")
            {
                ns.resume();
                updateProgress();
            }

            if (currentStatus == "pause")
            {
                currentStatus = "play";
                t.start();
            }
        }

        public function pauseStatus():void
        {
            ns.pause();
            t.stop();
            trace("pause");
            if (currentStatus == "play")
            {
                currentStatus = "pause";
            }
        }

        public function get currentVideoStatus():String
        {
            return currentStatus;
        }

        public function restartVideo():void
        {
            ns.resume();
        }

        //--------------------------------------------------------------------------

        public function updateProgress():void
        {
            ns.seek((progressB.currentProgress / 668) *meta.duration);
        }

        public function get nsBytesTotal():Number
        {
            return ns.bytesTotal;
        }

        public function get nsBytesLoaded():Number
        {
            return ns.bytesLoaded;
        }

        public function get getVideoURL():String
        {
            return videoURL;
        }
    }
}
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-18T00:35:44+00:00Added an answer on May 18, 2026 at 12:35 am

    I strongly, strongly recommend against doing some sort of flag or timer hack to get around an unexplained behavior – that leads to code bloat and down the line it’ll cause you more problems in the long run.

    It’s much, much, much better to understand why it’s calling your function twice. Invest the time in figuring that out (do you have listeners set on multiple display objects? Is this some sort of bubbling issue? Could it be your mouse? Try a clean flash project with just a handler and see if that calls twice, etc), and not only will your code be better and faster but you’ll also learn a lot in the process.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

No related questions found

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.