我有一个可拖动的项目,一个在单击时调用startDrag()的MovieClip,以及舞台上的另一个MovieClip。
我需要MovieClip接收ROLL_OVER和ROLL_OUT事件,同时拖动可拖动的MovieClip,但是当剪辑被拖过它时,下部剪辑不会收到这些消息。
基本上,ROLL_OVER仅发送到鼠标下的最顶层的 MovieClip。通常情况下,您可以在重叠的MovieClip上使用mouseEnabled或mouseChildren的某些组合来修复它,但如果您对可拖动的MovieClip执行此操作,则会中断拖动操作。我需要检测鼠标何时位于较低的MovieClip上,无论其上方是哪个MovieClip。
那么,我该怎么做?
答案 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()时 - 删除侦听器