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