作者cjcat2266 (CJ Cat)
看板Flash
标题Re: [问题] 回圈的变数去传参数的问题
时间Sun Sep 16 22:35:03 2007
※ 引述《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)
1F:推 easy0519:执行 onRollOver 时 Scope应该看不到 i 喔 09/16 22:48
2F:→ easy0519:看到是 undefined 吧~ 09/16 22:48
3F:推 cjcat2266:那是要写var i:Number = 1才会是undefined 09/16 23:08
4F:→ cjcat2266:写i = 1的话,i是属於_root的,因为MC是dynamic class 09/16 23:09