次のコード スニペットは、を処理するイベント ハンドラ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);
私が抱えている問題はstageY
、イベントをトリガーするオブジェクトが移動された後の変更stageX
のプロパティです (x と y を変更することによって)。evt
たとえば、1 行目のトレースは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);
}
}
}