以下代码段是处理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)后,我遇到的问题是stageY
和stageX
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);
}
}
}