如何在上面拖动MovieClip时检测元素上的翻转?

时间:2010-10-20 22:38:48

标签: flash actionscript-3

我有一个可拖动的项目,一个在单击时调用startDrag()的MovieClip,以及舞台上的另一个MovieClip。

我需要MovieClip接收ROLL_OVER和ROLL_OUT事件,同时拖动可拖动的MovieClip,但是当剪辑被拖过它时,下部剪辑不会收到这些消息。

基本上,ROLL_OVER仅发送到鼠标下的最顶层的 MovieClip。通常情况下,您可以在重叠的MovieClip上使用mouseEnabled或mouseChildren的某些组合来修复它,但如果您对可拖动的MovieClip执行此操作,则会中断拖动操作。我需要检测鼠标何时位于较低的MovieClip上,无论其上方是哪个MovieClip。

那么,我该怎么做?

4 个答案:

答案 0 :(得分: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的{​​{1}}事件中,您可以再次启用它:

stopDrag()

我没有试过这个,但它应该停止你从接收任何鼠标事件拖动的剪辑。

*但有一点是因为剪辑本身不接收鼠标事件,displayObject.mouseEnabled = true; displayObject.mouseChildren = true; 事件不能直接放在它上面,而是必须放在它的父节点或舞台上。

答案 1 :(得分:0)

使用MOUSE_OVER鼠标事件。

答案 2 :(得分:0)

您可以使用hitTestObject()方法

这有点矫枉过正:)但你也可以使用碰撞检测
http://coreyoneil.com/portfolio/index.php?project=5

答案 3 :(得分:0)

声明一个检查鼠标坐标是否在影片剪辑矩形内的函数

调用startDrag()时,将ENTER_FRAME事件侦听器添加到舞台上的剪辑并将该函数用作侦听器

调用stopDrag()时 - 删除侦听器