Re: [問題] 共同宣告,各別呼叫。
讓我來舉個簡單的例子做說明好了 :)
先做一個物件,放在library裡,identifier取名叫btn_mc
for(var i:Number = 0; i<4; i++){
thisBtn = this.attachMovie("btn_mc", "btn_mc" +i, i, {_x:i*120+60,_y:30});
thisBtn.onRelease = function(){
trace(i);
}
}
用attachMovie的方式,從library裡把btn_mc拉到場景上
並各別幫每個按鈕加了onRelease的事件,讓它trace出i的值
直覺想會覺得這應該會是每個不同按鈕按下去跑不同的值出來
但實際上它四個按鈕都會trace出相同的值,都是4
原因是因為它在按下去的時候,i的值已經是變成4了 :)
解決方式可以像之前寫的,用substr的方式抓btn_mc的實體名稱的尾數來用
另一個我比較常用的方法,是在迴圈執行階段,就把i的值塞到btn_mc裡面
程式碼會改成:
for(var i:Number = 0; i<4; i++){
thisBtn = this.attachMovie("btn_mc", "btn_mc" +i, i, {_x:i*120+60,_y:30});
thisBtn.i = i;
thisBtn.onRelease = function(){
//trace(i);
trace(this.i);
}
}
這樣一來,雖然最後i的值會變成4,但各別btn裡面的值是在執行階段就定在裡面了
應該就可以抓到這個i了 :)
供大家參考
--
http://www.eddie.com.tw/blog/
http://www.eddie.com.tw/
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.133.136.105
討論串 (同標題文章)
完整討論串 (本文為第 5 之 5 篇):
1
1
Flash 近期熱門文章
PTT數位生活區 即時熱門文章