2010-10-20 18 views
0

我有一個可拖動的項目,當它被點擊時調用startDrag()的MovieClip以及舞臺上的另一個MovieClip。如何在拖動上面的MovieClip時檢測元素的翻轉?

我需要MovieClip接收ROLL_OVER和ROLL_OUT事件,而可拖動的MovieClip正在被拖動到它上面,但是下面的剪輯在拖動剪輯時不會收到這些消息。

本質上,ROLL_OVER只發送到最上面的 MovieClip下的鼠標。通常情況下,您可以在重疊的影片剪輯上使用mouseEnabled或mouseChildren的某種組合來解決這個問題,但是如果您對可拖動的影片剪輯執行此操作,則會中斷拖動。我需要檢測鼠標何時位於較低的MovieClip上,而不管它上面有什麼影片剪輯。

那麼,我該怎麼做呢?

回答

1

你可以禁用正在拖動如剪輯鼠標交互。
在您MOUSE_DOWN事件:

displayObject.startDrag(); 
// Disable mouse interactions for this object 
displayObject.mouseEnabled = false; 
// Disable mouse interactions for this objects children. 
displayObject.mouseChildren = false; 

然後在你的MOUSE_UP事件,你叫stopDrag()可以重新啓用它:

displayObject.mouseEnabled = true; 
displayObject.mouseChildren = true; 

我還沒有試過,但它應該停止的剪輯中從接收任何鼠標事件拖動。

*儘管一件事是因爲剪輯本身沒有收到鼠標事件,所以MOUSE_UP事件不能直接放置在它上面,但必須放在它的父級或舞臺上。

+0

這解決了它。非常感謝你! PatrickS和www0z0k的解決方案也可以工作,但它們更復雜。這是一個簡單的解決方案,因爲您只需要跟蹤「我正在被拖動」並將mouseUp附加到舞臺上。 – 2010-10-21 14:25:05

0

使用MOUSE_OVER鼠標事件。

+0

感謝您的建議,但這在我的情況下不起作用,因爲就像ROLL_OVER一樣,MOUSE_OVER不會觸發對象,如果上面有一個顯示對象沒有mouseEnabled設置爲false。 – 2010-10-21 14:29:05

0

聲明來檢查,如果鼠標的座標的movieclip矩形內的功能

調用的startDrag()添加ENTER_FRAME事件偵聽到夾子上的階段,並使用該函數作爲偵聽時

調用stopDrag當

() - 刪除監聽器

相關問題