看板 Flash 關於我們 聯絡資訊
※ 引述《starboarder (星巴克on月球)》之銘言: : function hit(event:MouseEvent){ : score = score + 1 : removeChild(mouse) : } : function mouseend(event:TimerEvent){ : removeChild(mouse) : } 就我拿你的檔案來測試 是可以動的,但會有 runtime error 原因在於你兩個函數裡面都用了 removeChild(mouse) 但可能 hit 已經先執行了,那麼到 mouseend 就會出現 "Error #2025: 提供的 DisplayObject 必須是呼叫者的子系" 這個錯誤 因為這時 mouse 已經被 remove 掉了 解決方式,你可以在 hit 裡面停止 looktime 或者在 mouseend 裡面判斷 if(contains(mouse))removeChild(mouse); 或其他你認為可避免重複 removeChild 的方法 另外就一個程式設計師的角度,建議你描述問題的時候給予正確資訊 只用一個"不行了",你沒辦法讓別人知道是怎樣不行了 在我們找出答案之前,我們還得先找出問題本身是什麼 錯誤資訊其實 output 視窗都有,建議你下次程式"不行了"的時候 仔細檢視 output 視窗給你的資訊,在討論時也提供大家這些資訊 : 推 SheLoBDenI:function 裡面沒有宣告mouse,他只能抓到最後一個。 04/21 11:32 : → SheLoBDenI:你應該是要用event.target才是移除每次click的目標 04/21 11:33 就 variable scope 來說他原本的做法是沒有問題的 : 推 KawasumiMai:痾...你Function裡面包function? 04/22 23:24 : 推 KawasumiMai:試著把function抓出來獨立然後確定好變數的區域 04/22 23:28 : → KawasumiMai:然後使用上面說的event.target吧 04/22 23:28 : → KawasumiMai:猜測你應該是一開始放外面的時候抓不到mouse所以才 04/22 23:28 : → KawasumiMai:扔進去裡面? 04/22 23:28 function 裡面包 function 雖然習慣上不是很正確 但視情況也不見得是一定是錯誤的做法 就原PO來說,問題也不是出在巢狀 function 上面 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.163.107.175 ※ 文章網址: http://www.ptt.cc/bbs/Flash/M.1398222878.A.840.html ※ 編輯: scars (118.163.107.175), 04/23/2014 11:20:25
KawasumiMai:問題雖然不出在巢狀,但就原原PO的情況來說,下次 04/24 10:33
KawasumiMai:TimeEvent的物件整個匿名化了,很容易抓不到目標吧? 04/24 10:33
scars:就他變數scope的設計來說我想是不會的 04/24 16:02
starboarder:阿....最近比較忙所以沒有上來看 想不到這麼多人回 05/05 19:14
starboarder:文 謝謝大家的幫助 等一下來試試看 有幫忙的一人 05/05 19:14
starboarder:200P幣 聊表心意 謝謝幫忙 (希望不用再麻煩大家) 05/05 19:15
starboarder:也謝謝scars的提醒 下次會把output的資訊放上來的 05/05 19:17