AS3 Drag总是快速回到原来的位置?

时间:2013-12-21 17:37:22

标签: actionscript-3 drag-and-drop

制作一个带有滑块的简单应用程序,该滑块可以更改文本框值,但每当我放下滑块时,它都会快速回到0位置。我需要它留在原地。请帮忙!

代码:

        theroot.settings_but.phone1.slider.addEventListener(MouseEvent.MOUSE_DOWN, slide);


        public function slide(e:MouseEvent):void
    {


            stage.addEventListener(MouseEvent.MOUSE_UP, dragstop);
            var bounds:Rectangle = new Rectangle(0,27,550,0);
            theroot.settings_but.phone1.slider.startDrag(false, bounds);
            txtboxint = setInterval(changetextbox, 500);

    }
    public function dragstop(e:MouseEvent):void
    {
        stage.removeEventListener(MouseEvent.MOUSE_UP, dragstop);
        clearInterval(txtboxint);
        trace("what", e.target.x, e.currentTarget, e.target.name) //  returns proper x value, [object Stage], slider
        trace("almost", theroot.settings_but.phone1.slider.x);// returns proper x value
        theroot.settings_but.phone1.slider.stopDrag();
        trace("last", theroot.settings_but.phone1.slider.x); //returns proper x value
    }
    public function changetextbox():void
    {
        trace(theroot.settings_but.phone1.slider.x) //returns proper x value
        theroot.settings_but.phone1txt.text = (Math.floor(((theroot.settings_but.phone1.slider.x) / 550) * 40));
    }

2 个答案:

答案 0 :(得分:0)

试试这个,

     theroot.settings_but.phone1.slider.addEventListener(MouseEvent.MOUSE_DOWN, slide);


     public function slide(e:MouseEvent):void
     {
        theroot.settings_but.phone1.slider.removeEventListener(MouseEvent.MOUSE_DOWN, slide);
        stage.addEventListener(MouseEvent.MOUSE_UP, dragstop);
        var bounds:Rectangle = new Rectangle(0,27,550,0);
        theroot.settings_but.phone1.slider.startDrag(false, bounds);
 theroot.settings_but.phone1.slider.addEventListener(Event.ENTER_FRAME,changetextbox);    
     }

     public function dragstop(e:MouseEvent):void
     {
        theroot.settings_but.phone1.slider.stopDrag();
        stage.removeEventListener(MouseEvent.MOUSE_UP, dragstop);
        trace("what", e.target.x, e.currentTarget, e.target.name) //  returns proper x value, [object Stage], slider
        trace("almost", theroot.settings_but.phone1.slider.x);// returns proper x value           
        trace("last", theroot.settings_but.phone1.slider.x); //returns proper x value                    theroot.settings_but.phone1.slider.removeEventListener(Event.ENTER_FRAME,changetextbox);  
      theroot.settings_but.phone1.slider.addEventListener(MouseEvent.MOUSE_DOWN, slide);
     }

     public function changetextbox(e:Event):void
     {
        trace(theroot.settings_but.phone1.slider.x) //returns proper x value
        theroot.settings_but.phone1txt.text = (Math.floor(((theroot.settings_but.phone1.slider.x) / 550) * 40));
     }

答案 1 :(得分:0)

问题是事件冒泡到主MC,导致带有滑块的MC转到第0帧

感谢您的帮助!