看板 Flash 關於我們 聯絡資訊
※ 引述《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)
easy0519:執行 onRollOver 時 Scope應該看不到 i 喔 09/16 22:48
easy0519:看到是 undefined 吧~ 09/16 22:48
cjcat2266:那是要寫var i:Number = 1才會是undefined 09/16 23:08
cjcat2266:寫i = 1的話,i是屬於_root的,因為MC是dynamic class 09/16 23:09