Actionscript 3 stageX随着目标位置的变化而变化?

Actionscript 3 stageX随着目标位置的变化而变化?,actionscript-3,events,mouseevent,Actionscript 3,Events,Mouseevent,以下代码段是处理MouseEvent的事件处理程序。单击: trace("me stageX:"+evt.stageX+" stageY:"+evt.stageY); var placeX:int = evt.stageX-EasingWithMouse.CELL_WIDTH/2; var placeY:int = evt.stageY-EasingWithMouse.CELL_HEIGHT/2; stage.addChild(this); this.x = placeX; this.y = p

以下代码段是处理
MouseEvent的事件处理程序。单击

trace("me stageX:"+evt.stageX+" stageY:"+evt.stageY);
var placeX:int = evt.stageX-EasingWithMouse.CELL_WIDTH/2;
var placeY:int = evt.stageY-EasingWithMouse.CELL_HEIGHT/2;
stage.addChild(this);
this.x = placeX;
this.y = placeY;
trace("me stageX:"+evt.stageX+" stageY:"+evt.stageY);
我遇到的问题是,在触发事件的对象移动后(通过更改x和y),evt的
stageY
stageX
属性会发生更改

例如,第一行的跟踪是
stageX:130 stageY:150
。这在x轴上移动0,在y轴上移动-30。最后一行上的跟踪现在报告
stageX:130 stageY:120

为了使问题复杂化,新的evt.stageX和evt.stageY将通过事件链的其余部分进行传播

这是我应该期待的吗

我这样问是因为参考文件说:

[只读]全局阶段坐标中事件发生的水平坐标

但我不会在全球范围内修改任何东西

下面是一个快速而肮脏的完整示例:

Main.as文件:

package{
    import flash.display.*;
    import flash.ui.Mouse;
    import flash.events.*;

    public class Main extends Sprite{
        private var container:Sprite = new red1();//red1 is a symbol
        private var target:Sprite = new testreg1();//testreg1 is a symbol

        public function Main(){
            stage.addChild(container);
            container.x = 100;
            container.y = 100;
            container.addChild(target);
        }
    }
}
testreg1.as文件

package{
    import flash.display.*;
    import flash.ui.Mouse;
    import flash.events.*;

    public class testreg1 extends MovieClip{
        public function testreg1(){
            addEventListener(MouseEvent.CLICK,meClick);
        }

        public function meClick(evt:MouseEvent):void{
            trace("target stageX:"+evt.stageX+" stageY:"+evt.stageY);
            var placeX:int = evt.stageX-50;
            var placeY:int = evt.stageY-50;
            stage.addChild(this);
            this.x = placeX;
            this.y = placeY;
            trace("target stageX:"+evt.stageX+" stageY:"+evt.stageY);
        }
    }
}

我认为这与你在舞台外放置东西有关。我试图通过设置不同的对齐模式和缩放模式来重现这个问题,但没有成功。这不可能。当我读取evtents stageX和stageY变量时,它们在同一个函数中总是相同的。你必须发布更多的代码,这些代码真的来自同一个函数吗?难道不是
stage.addChild(this)
冗余吗?如果是的话,那就是你的问题了,你正在移动事件的目标,这会自然而然地移动所有的东西。懒惰的解决方案是克隆你的evt,停止传播,并发送新克隆的evtMouseEvent@MartonPallagi不,这不是多余的。我故意将物体从容器中移出,并将其直接放在舞台上。我不确定人们是否应该期望与活动相关的财产会在中途发生变化。事件不应该捕获特定时间点的状态,而不管目标在之后发生了什么?我不确定,我能看到问题的两面。我通过捕获
stage.mouseX
stage.mouseY