Re: [問題] 想做類似打地鼠 卻沒有辦法@@"
※ 引述《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
04/24 10:33, 1F
→
04/24 10:33, , 2F
04/24 10:33, 2F
→
04/24 16:02, , 3F
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
05/05 19:15, 6F
→
05/05 19:17, , 7F
05/05 19:17, 7F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
Flash 近期熱門文章
PTT數位生活區 即時熱門文章