Re: [問題] 迴圈的變數去傳參數的問題

看板Flash作者 (CJ Cat)時間18年前 (2007/09/16 22:35), 編輯推噓2(202)
留言4則, 2人參與, 最新討論串4/4 (看更多)
※ 引述《cantuse (不會用)》之銘言: : 為什麼跑出來的還是 : _root.store_mc.store1_mc.onRollOver = function() { : rollOverIt(i); : } : 呢? : 是因為它是參數的關係嗎?? : 謝謝^^ 用associative array語法吧,我沒用過eval...eval也在AS3被移除了 試試看下面的code有沒有用 for(var i:Number = 1; i <= 200; i++) { _root.store_mc["store" + i + "_mc"].onRollOver = function() { this.j = i rollOverIt(this.j); }; } i是for loop的scope裡面的變數 所以我在MC本身宣告一個j來儲存i的值 沒有測試過,所以可能會有錯字 :p 這就是為什麼你 rollOverIt(i) 永遠是顯示200的原因 因為你是寫 i=1 而不是 var i:Number = 1 這樣 i 的scope會超出for,然後一直維持for跑完的值...200 然後每個onRollOver裡面的rollOverIt(i)被呼叫的時候才去抓那個i 這就是為什麼每次抓i的時候都得到200 (解決方法就是像上述的用個MC本身的另外一個變數 去儲存當時i的值) -- CJ Cat = Croa'J Cat = Cockroach Cat = 西街凱特 = 蜚蠊貓 = 蟑螂貓 Gallery http://cjcat2266.deviantart.com ptt2 Board CJWorkshop - 阿多比閃光(Adobe Flash)研討區 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.228.75.35 ※ 編輯: cjcat2266 來自: 61.228.75.35 (09/16 22:44)

09/16 22:48, , 1F
執行 onRollOver 時 Scope應該看不到 i 喔
09/16 22:48, 1F

09/16 22:48, , 2F
看到是 undefined 吧~
09/16 22:48, 2F

09/16 23:08, , 3F
那是要寫var i:Number = 1才會是undefined
09/16 23:08, 3F

09/16 23:09, , 4F
寫i = 1的話,i是屬於_root的,因為MC是dynamic class
09/16 23:09, 4F
文章代碼(AID): #16xJyQcH (Flash)
文章代碼(AID): #16xJyQcH (Flash)