Actionscript 3 AS3拖动始终捕捉回原始位置?
制作一个带有滑块的简单应用程序,该滑块可以更改文本框值,但每当我放下滑块时,它都会捕捉回其0位置。我需要它保持原位。请帮忙 代码: 试试这个Actionscript 3 AS3拖动始终捕捉回原始位置?,actionscript-3,drag-and-drop,Actionscript 3,Drag And Drop,制作一个带有滑块的简单应用程序,该滑块可以更改文本框值,但每当我放下滑块时,它都会捕捉回其0位置。我需要它保持原位。请帮忙 代码: 试试这个 theroot.settings_but.phone1.slider.addEventListener(MouseEvent.MOUSE_DOWN, slide); public function slide(e:MouseEvent):void { theroot.settings_but.phone1.
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));
}
问题是事件冒泡到主MC,这导致带滑块的MC转到第0帧
谢谢你的帮助 对不起,还是不行,如果我在除滑块mc之外的任何位置释放鼠标,它将保持在原位,直到我单击屏幕上的任何其他位置。然后,它会弹回来。非常令人沮丧。我想问题一定是在代码的其他地方发生的。这个看起来不错。
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));
}