1 つは ltr と呼ばれ、もう 1 つは ltrTarget と呼ばれます。それらは両方とも隣り合った円です。これは私のコードです:
import flash.geom.Point;
ltr.addEventListener( MouseEvent.MOUSE_DOWN, pickup );
ltr.addEventListener( MouseEvent.MOUSE_UP, place );
var startingLocation = new Point();
function pickup( evt:MouseEvent ):void {
startingLocation.x = evt.target.x;
startingLocation.y = evt.target.y;
evt.target.startDrag();
}
function place( evt:MouseEvent ):void {
evt.target.stopDrag();
trace(evt.target.dropTarget);
if ( evt.target.dropTarget == ltrTarget ) {
evt.target.x = ltrTarget.x;
evt.target.y = ltrTarget.y;
} else {
evt.target.x = startingLocation.x;
evt.target.y = startingLocation.y;
}
}
ここで、ltr をドラッグして、ltrTarget 以外の場所にドロップすると、「null」をトレースして元の場所にリセットされます (startingLocation にリセットされます)。これは正しいことです。ただし、ltrTarget の上にドロップすると、「[object Shape]」がトレースされますが、ltrTarget の x と y の位置を取得するのではなく、startingLocation にリセットされます。
私が変更され
trace(evt.target.dropTarget);
に
trace(evt.target.dropTarget.name);
そして、ltrTarget の一番上に配置しないと、「instance1」をトレースします。ltrTarget の上に ltr をドロップすると、ltr の x と y の位置が ltrTarget の x と y の位置にならないのはなぜですか?