作者icedesign (不可或缺的咖啡因)
看板Flash
標題Re: [問題] 共同宣告,各別呼叫。
時間Fri Jun 1 12:06:12 2007
※ 引述《aquarianboy (我是沒牌的營養師!)》之銘言:
: ※ 引述《icedesign (不可或缺的咖啡因)》之銘言:
: : function test() {
: : for (var i:Number = 1; i<=6; i++) {
: this["test"+i+"_btn"].i = i; //加這行
: : this["test"+i+"_btn"].onRelease = function() {
: : if (i=1) {
: : //trace(i);
: trace(this.i); //改成this.i,其它以此類推
: : }
: : };
: : }
: : }
: : test();
: 應該這樣就行了
: 另外,即然這麼多個if,建議可以改用switch-case的方式 :)
: 供你參考
嗯嗯,可以解說一下,為什麼要加
this["test"+i+"_btn"].i = i; //
這一行呢?意思是說,按鈕的i值將會等於i嗎?
然後剛剛爬文,看到之前有個類似的問題,版上版友有人解答,不過倒
是有很多疑問:
var i:Number = 0;
var chosenPart:Number = 0;
for (i=1; i<=6; i++) {
this["part_"+i+"_mc"].onRelease = function() {
chosenPart = int(this._name.substr(5, 1));
trace(chosenPart);
};
}
上面這道式子就可以將場景上6個mc共同宣告,各別丟出不一樣的值,因為
我很想瞭解原因,所以反推了很多次,不過還是不懂下面這行
int(this._name.substr(5, 1));
這一行當中的int我已經將它改為Math.round,而substr中的值,(5,1),
我以為有六個mc,將原先的5改成6,結果丟出來的值卻變成全部都是"0"
如果將5改成-1到4之間的數字,則丟回NaN,@@""可以請高手解說一下是
怎麼一回事嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.135.178.144
推 LPH66:this._name是個長得像"part_1_mc"的字串 06/01 12:06
→ LPH66:所以substr就會抓出中間那個數字 然後被int()轉成整數 06/01 12:07
→ icedesign:啊啊啊啊啊啊啊啊~(~^O^~)感謝樓上,\(^▽^)/感謝版大! 06/01 12:09
→ icedesign:O_oㄟ...剛試了一下,我改了中間變數i為7,那為什麼將 06/01 12:12
→ icedesign:substr的5改成6,它依然是NaN呢?= ="還是不太懂^^" 06/01 12:13
推 afu70:可以先trace(this._name)再trace(this._name.substr(5, 1)) 06/01 13:22
→ afu70:看看 不過不建議這種方式 要是按鈕數量超過10 找到的數字可 06/01 13:23
→ afu70:能不是你想要的 06/01 13:24
→ afu70:比較好的還是水瓶大的直接在元件設屬性i 之後要找就不用費力 06/01 13:24