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

看板Flash作者 (不可或缺的咖啡因)時間18年前 (2007/06/01 12:06), 編輯推噓2(207)
留言9則, 3人參與, 最新討論串3/5 (看更多)
※ 引述《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

06/01 12:06, , 1F
this._name是個長得像"part_1_mc"的字串
06/01 12:06, 1F

06/01 12:07, , 2F
所以substr就會抓出中間那個數字 然後被int()轉成整數
06/01 12:07, 2F

06/01 12:09, , 3F
啊啊啊啊啊啊啊啊~(~^O^~)感謝樓上,\(^▽^)/感謝版大!
06/01 12:09, 3F

06/01 12:12, , 4F
O_oㄟ...剛試了一下,我改了中間變數i為7,那為什麼將
06/01 12:12, 4F

06/01 12:13, , 5F
substr的5改成6,它依然是NaN呢?= ="還是不太懂^^"
06/01 12:13, 5F

06/01 13:22, , 6F
可以先trace(this._name)再trace(this._name.substr(5, 1))
06/01 13:22, 6F

06/01 13:23, , 7F
看看 不過不建議這種方式 要是按鈕數量超過10 找到的數字可
06/01 13:23, 7F

06/01 13:24, , 8F
能不是你想要的
06/01 13:24, 8F

06/01 13:24, , 9F
比較好的還是水瓶大的直接在元件設屬性i 之後要找就不用費力
06/01 13:24, 9F
文章代碼(AID): #16Nviuye (Flash)
文章代碼(AID): #16Nviuye (Flash)