1

親コンテナーの座標からグローバル ステージ座標に変換しようとしています。これはオブジェクトとコンテナです:

 imgSprite.addChild(imgInstance); //imgInstance is imported from class
 imageContainer.addChild(last); 
 imageContainer.addChild(imgSprite); // imgSprite and last are to be replaced 

基本的には、 の 2 つの画像の位置を入れ替えたいと考えていimageContainerます。

関数を適用しましたlocalToGlobal()が、効果はありませんでした。私は何を間違えましたか?

これは、それらを置き換える私の機能です。注:このコードはクラスに属しmain、コンテナの親はステージであり、すべてが(コードではなく)経由でimgSprite追加および移動されます。imgContainerobj.xobj.y

function click(e:MouseEvent):void {     
    var p1:Point = e.currentTarget.localToGlobal(newPoint(e.currentTarget.x, e.currentTarget.y));
    var p2:Point = last.localToGlobal(new Point(last.x, last.y));
    e.currentTarget.x = globalToLocal(p2).x; 
    e.currentTarget.y = globalToLocal(p2).y;
    last.x = globalToLocal(p1).x;
    last.y = globalToLocal(p1).y;
}

私が理解しているように、すべてのオブジェクトにはローカル位置とグローバル位置があります。したがって、ここではローカル位置をグローバルに変換し、他のオブジェクトをこの位置に移動するときに、ローカルに変換します。それらは同じ親に属しているため、座標が一致するはずですが、画像が飛び回り始めますあらゆる方向に、私は髪を引っ張り始めます。

4

1 に答える 1

0
var p2:Point = last.localToGlobal(new Point(last.x, last.y));

する必要があります

var p2:Point = last.localToGlobal(new Point(0, 0));

withinのPoint引数は、グローバル化するlocalToGlobal()内のポイントです。DisplayObjectしたがって、lastが親コンテナー内の (50,50) にある場合、コードは実際には 内の (50,50) のグローバル座標を要求していますlast。この場合、(0,0)( last.x, last.y) です。

于 2012-12-19T16:08:31.430 に答える