Re: [問題] 共同宣告,各別呼叫。

看板Flash作者 (我是沒牌的營養師!)時間18年前 (2007/06/01 13:42), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串5/5 (看更多)
讓我來舉個簡單的例子做說明好了 :) 先做一個物件,放在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
文章代碼(AID): #16Nx7AD5 (Flash)
文章代碼(AID): #16Nx7AD5 (Flash)