stageX随目标位置的变化而变化?

时间:2013-11-06 03:03:09

标签: actionscript-3 events mouseevent

以下代码段是处理MouseEvent.CLICK

的事件处理程序
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)后,我遇到的问题是stageYstageX evt属性更改。

例如,第一行的跟踪是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);
        }
    }
}

0 个答案:

没有答案