2

次のコード スニペットは、を処理するイベント ハンドラ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);
        }
    }
}
4

0 に答える 0