→ intangible:感謝~的確使用stopPropagation解決了 謝謝!! 05/27 10:50
※ 引述《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