拖动容器的子项时mouseX / Y混乱

| 我有一个图像网格,该图像网格已添加到类中的imagecontainer(Sprite)中。 当我单击一个按钮时,图像容器将补间(缩放)为0.2 现在,我想开始拖动图像。在鼠标按下时,我添加一个enterFrame事件:
function onEnterFrame(e:Event):void
{
  imagecontainer.image.x = this.mouseX;
  imagecontainer.image.y = this.mouseY;

}
不幸的是,图像从不在鼠标位置上,而是与鼠标指针的偏移增加/减少。 另一种选择是,startDrag / stopDrag可以正常工作,但是我仍然需要mouseX / mouseY才能将图像放置在网格上…… 我也尝试过parent.mouseX,没有运气。 为什么会这样呢?我认为mouseX / mouseY始终取决于舞台尺寸。     
已邀请:
你有没有尝试过:
function onEnterFrame(e:Event):void
{
  imagecontainer.image.x = stage.mouseX;
  imagecontainer.image.y = stage.mouseY;

}
    
如果要相对于鼠标在
stage
上的位置获得
mouseX
mouseY
,那么为什么不使用:
stage.mouseX,
stage.mouseY
另外,如果您放大某些内容(例如,将总大小设为200%),那么舞台上的50个像素实际上就是已缩放的容器中的25个像素。 将此用作文档类以了解我的意思:
package
{
    import flash.display.MovieClip;
    import flash.events.Event;

    public class Main extends MovieClip
    {
        private var _box:MovieClip;

        public function Main()
        {
            addEventListener(Event.ENTER_FRAME, _move);

            _box = new MovieClip();
            _box.scaleX = _box.scaleY = 2;

            addChild(_box);
        }

        private function _move(e:Event):void
        {
            trace(\"stage: \" + stage.mouseX + \", \" + stage.mouseY);
            trace(\"box: \" + _box.mouseX + \", \" + _box.mouseY);
        }
    }
}
    
如果您仍在寻找,可以使用startDrag();。和stopDrag(); 用于拖动图像。 像这样:
    image.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDownMC);
    image.addEventListener(MouseEvent.MOUSE_UP, onMouseUpMC);

    function onMouseDownMC(e:MouseEvent):void
    {
        e.currentTarget.startDrag(true);
    }
    function onMouseUpMC(e:MouseEvent):void
    {
        e.currentTarget.stopDrag();
    }
更新:您可以这样设置ur函数:
image.addEventListener(MouseEvent.MOUSE_DOWN, onMouseMC);
image.addEventListener(MouseEvent.MOUSE_UP, onMouseMC);

function onMouseMC(e:MouseEvent):void
{
    var type = e.type;
    if(type == MouseEvent.MOUSE_DOWN) /// u can use \"mouseDown\" accept  MouseEvent.MOUSE_DOWN 
    {
        e.currentTarget.startDrag(true);// if you set true its gonna drag the obj from center
    }
    else if(type == MouseEvent.MOUSE_UP)
    {
        e.currentTarget.stopDrag();  //u can use \"mouseUp\" accept  MouseEvent.MOUSE_UP
    }
}
    

要回复问题请先登录注册