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 2009-08-30 14:06:34
輕微的誤解。我已經添加了我用來做類似事情的代碼。 – Glenn 2009-08-30 20:34:35
您需要使用「pointTo」函數來轉換流浪事件中的共同點。例如Label控件的TextField子項。 – Glenn 2009-08-30 20:38:01