2016-07-28 60 views
0

我遇到可拖动菜单包括菜单按钮项目的问题。 在拖动操作结束时(当我将手指从屏幕上抬起时),由于其MOUSE_UP代码,按钮子项可用。从释放菜单项目保留MouseMove或拖动事件菜单结束后

我需要拖动结束放下我的菜单。下拉菜单按钮项监听器应该开始释放(MOUSE_UP)。我如何分离它们?

我读了一些类似的消息,但我无法解决我的问题。

我的代码:

addEventListener(MouseEvent.MOUSE_MOVE, dragStart); 
addEventListener(MouseEvent.MOUSE_UP, dragStop); 
function dragStart(e:MouseEvent):void { 
    e.currentTarget.startDrag(false,new Rectangle(0,0,500,0)); 
} 
function dragStop(e:MouseEvent):void { 
    e.currentTarget.stopDrag(false,new Rectangle(0,0,500,0)); 
} 

谢谢..

My sample file is here

+0

发布您的代码,请。 – null

+0

谢谢null;我在我的问题消息中添加了我的代码。 –

+0

所以你的问题是,子项目从父菜单中获得'MOUSE_UP'?或相反亦然?或者我错过了这一点? – www0z0k

回答

0

更新:
我得到它错了。我建议在父剪辑拖动时切换一个标志,如果它是true,则忽略儿童中的MOUSE_UP事件。

在父:

var dragging:Boolean = false; 

function dragStart(e:MouseEvent):void{ 
    e.currentTarget.startDrag(false,new Rectangle(0,0,500,0)); 
    dragging = true; 
} 
function dragStop(e:MouseEvent):void{ 
    e.currentTarget.stopDrag(); 
    removeEventListener(MouseEvent.MOUSE_MOVE, dragStart); 
    dragging = false; 
} 

subItem

function BTN(e:MouseEvent):void{ 
    if(!(parent as MovieClip).dragging){ 
     trace("I'm a button: "+this+" Did you hit me when you sliding?"); 
    } 
} 
+0

谢谢www0z0k,我会研究e.stopImmediatePropagation现在。 –

+0

这很好。有用。感谢www0z0k。感谢BadFeelingAboutThis。我尝试使用e.stopImmediatePropagation(),但我没有实现:( –

+0

嗨www0z0k,现在存在另一个问题。我在屏幕上的每个触摸只能移动功能。 –