作者aquarianboy (我是没牌的营养师!)
看板Flash
标题Re: [问题] 共同宣告,各别呼叫。
时间Fri Jun 1 13:42:31 2007
让我来举个简单的例子做说明好了 :)
先做一个物件,放在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