Actionscript 3 Flash as3鼠标自定义光标嵌套在movieclip中

Actionscript 3 Flash as3鼠标自定义光标嵌套在movieclip中,actionscript-3,flash,Actionscript 3,Flash,我有一个父MC(容器),里面有3个嵌套的MC(mc1、mc2、mc3)。“容器”MC位于舞台上的某个位置(不一定在0,0),注册点位于左上角。当我拖动一个嵌套的MC(中间有注册点)时,我希望目标MC在舞台上的任何位置跟随鼠标 我想在不使用startDrag()方法的情况下执行此操作。我知道我必须在MOUSE_MOVE handler函数中根据鼠标在舞台上的位置设置目标MC的坐标,比如 container.mc1.addEventListener(MouseEvent.MOUSE_DOWN, dr

我有一个父MC(容器),里面有3个嵌套的MC(mc1、mc2、mc3)。“容器”MC位于舞台上的某个位置(不一定在0,0),注册点位于左上角。当我拖动一个嵌套的MC(中间有注册点)时,我希望目标MC在舞台上的任何位置跟随鼠标

我想在不使用startDrag()方法的情况下执行此操作。我知道我必须在MOUSE_MOVE handler函数中根据鼠标在舞台上的位置设置目标MC的坐标,比如

container.mc1.addEventListener(MouseEvent.MOUSE_DOWN, drag);
function drag(e:MouseEvent):void{
    stage.addEventListener(MouseEvent.MOSUE_MOVE, move);
}
function move(e:MouseEvent):void{
     container.mc1.x = ??
     container.mc2.y = ??
}
我该怎么做?我对localToGlobal和globalToLocal方法感到非常困惑


我想说这句话作为一种评论,但我的低声誉还不允许我这么说

正如Vesper提到的,为什么不使用startDrag()?这似乎正是你想要/需要的。至于将中心点锁定到鼠标,startDrag()涵盖了以下内容:


只需使用startDrag()方法的第一个参数“true”,即可使用中心锁定。

您也可以使用mouseDown等。我有时发现它比startDrag更通用。以下内容将mc锁定到鼠标的当前偏移量,但很容易修改:

private var drag_info;
mc.addEventListener("mouseDown", dragStart);

private function dragStart(event:MouseEvent):void {
    var who = event.target as MovieClip;
    drag_info = { offsetX:mouseX-who.x, offsetY:mouseY-who.y, who:who };
    stage.addEventListener("mouseMove",dragUpdate);
    stage.addEventListener("mouseUp",dragStop);
}
private function dragUpdate(event:MouseEvent) {
    var who = drag_info.who;
    who.x = mouseX - drag_info.offsetX;
    who.y = mouseY - drag_info.offsetY;
}
private function dragStop(event:MouseEvent) {
    stage.removeEventListener("mouseMove",dragUpdate);
    stage.removeEventListener("mouseUp",dragStop);
}

为什么要避免
startDrag()
?您可以拖动容器MC,而不管正在拖动哪个嵌套MC。是的,没错,但我更关心的是将嵌套电影剪辑的中心注册点锁定到鼠标位置