0
標準のstartDrag/stopDragイベントを独自のルーチンで複製して、少し変えたいと思います。イベントの伝播やバブリングの問題が発生します。ここに私のコードです:マウスイベントでドラッグ&ドロップを複製する際の問題
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
mouseDown="mouseDown = true" mouseUp="mouseDown = false"
mouseMove="mouseMove(event)">
<mx:Script>
<![CDATA[
private var mouseDown:Boolean = false;
private var oldMouseX:int = 0, oldMouseY:int = 0;
private function mouseMove(e:MouseEvent):void {
if (mouseDown) {
object.x += (e.localX - oldMouseX);
object.y += (e.localY - oldMouseY);
}
oldMouseX = e.localX;
oldMouseY = e.localY;
trace(e.localX);
}
]]>
</mx:Script>
<mx:Label id="object" text="Drag me" />
</mx:Application>
このコードの問題は、あなたが右にオブジェクトをドラッグすると、あなたが側からけいれんオブジェクトで、その結果、時折いくつかのランダムlocalXプロパティ値が到着したトレースに表示されるということです側に。
私はその部分を修正する方法を理解していない、私はそれがmousemoveイベントを泡立てるラベルだと思うが、それをやめる方法を理解していない。
ご意見をいただければ幸いです!
if(e.target!= object)returnを追加する必要があります。関数の先頭に?私がそうすると、オブジェクトをまったくドラッグすることはできません。 それ以外の場合は、if(e.target!= this)returnを追加します。オブジェクトではなく背景を移動することでドラッグできます。 – melfar
微妙な誤解。私は同様のことをするために使用するコードを追加しました。 – Glenn
"pointTo"関数を使用して、浮遊事象からの座標を変換する必要があります。例えば、LabelコントロールのTextField子である。 – Glenn