作者scars (scars)
看板Flash
标题Re: [问题] 物件上的拖曳与stage上的拖曳
时间Fri May 27 05:59:29 2011
※ 引述《intangible (~*)》之铭言:
: 不好意思 想请教一个问题
: 就是有个OO档
: 本身物件里有自己的拖曳事件 (addEventListener)
: stage上有针对整个全部物件的拖曳事件(stage.addEventListener)
: 要如何达到 滑鼠在物件上拖曳时 只执行物件的拖曳事件
: 而不是stage的也一起执行
: 现在的情形是 滑鼠移上物件 stage的拖曳事件也会一起执行
: 不知道有没有懂我的意思 囧
: 抱歉没有一个好的范例档 囧a
: 谢谢大家!
在物件里面的 mousedown listener 里
让接收到的 event stopPropagation()
这个事件就不会往上传,stage也就接收不到
例
...
addEvenListener(MouseEvent.MOUSE_DOWN,mousedown);
...
private function mousedown(e:MouseEvent){
e.stopPropagation();
startDrag();
stage.addEventListener(MouseEvent.MOUSE_UP,mouseup);
}
private function mouseup(e:MouseEvent){
stopDrag();
stage.removeEventListener(MouseEvent.MOUSE_UP,mouseup);
}
尽量不要试图在物件里去remove其他地方add的listener
除非这个listener是物件自己添加的(如例中的mouseup)
如果整个档案只用一个class解决的话,或许还行吧
但既然是OO,将来势必让各物件分工
那你要如何在一个物件里remove其他物件add的listener
又如何把它add回去呢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.224.44.166
1F:→ intangible:感谢~的确使用stopPropagation解决了 谢谢!! 05/27 10:50