Re: [問題] 想做類似打地鼠 卻沒有辦法@@"

看板Flash作者 (scars)時間10年前 (2014/04/23 11:14), 10年前編輯推噓2(205)
留言7則, 3人參與, 最新討論串2/2 (看更多)
※ 引述《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

04/24 10:33, , 1F
問題雖然不出在巢狀,但就原原PO的情況來說,下次
04/24 10:33, 1F

04/24 10:33, , 2F
TimeEvent的物件整個匿名化了,很容易抓不到目標吧?
04/24 10:33, 2F

04/24 16:02, , 3F
就他變數scope的設計來說我想是不會的
04/24 16:02, 3F

05/05 19:14, , 4F
阿....最近比較忙所以沒有上來看 想不到這麼多人回
05/05 19:14, 4F

05/05 19:14, , 5F
文 謝謝大家的幫助 等一下來試試看 有幫忙的一人
05/05 19:14, 5F

05/05 19:15, , 6F
200P幣 聊表心意 謝謝幫忙 (希望不用再麻煩大家)
05/05 19:15, 6F

05/05 19:17, , 7F
也謝謝scars的提醒 下次會把output的資訊放上來的
05/05 19:17, 7F
文章代碼(AID): #1JLp0UX0 (Flash)
文章代碼(AID): #1JLp0UX0 (Flash)