看板 Flash 關於我們 聯絡資訊
※ 引述《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
intangible:感謝~的確使用stopPropagation解決了 謝謝!! 05/27 10:50