作者kirai (囧RZ)
看板Flash
标题[问题] 使用回圈加入变数
时间Sun Nov 18 07:52:52 2012
假设现在有icon1, icon2, ...这些MC
(存放在元件库里)
而我想为每个icon都建立一个连结
ex:icon1的连结叫Icon1
再宣告变数
var icon1:MovieClip=new Icon1();
有办法直接一次用回圈处理完毕吗?
p.s 试过 var this['icon'+i]=new this['Icon'+i];
这个写法似乎不行...
谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.64.141.156
1F:推 cjcat2266:this["icon"+1] = new getDefinitionByName("icon"+i); 11/19 00:37
请问cj 为什麽用 getDefinitionByName 这个指令就可以了呢?
谢谢
※ 编辑: kirai 来自: 61.64.142.146 (11/19 09:19)
2F:推 cjcat2266:getDefinitionByName是AS3内建reflection函式 11/20 02:52
3F:→ cjcat2266:然後new this本身就是非法语法,其实没什麽为什麽... 11/20 02:53
4F:推 cjcat2266:咧,我说错了, new this["something"]可以是合法的 11/20 06:42
5F:→ cjcat2266:只要this["something"]是一个正确的Class物件参考就OK 11/20 06:42
6F:→ cjcat2266:var this[...这部分才是非法,因为var後面不能接this 11/20 06:43
7F:→ kirai:那用this["icon"+1] = new getDefinitionByName("icon"+i) 11/20 23:39
那用this["icon"+1] = new getDefinitionByName("icon"+i)
这个语法是直接宣告出iconi这个变数
但就语意来看, 没有指定他的类别耶
这样宣告出的变数不是无法确定类别吗?
不好意思问题这麽多....
※ 编辑: kirai 来自: 61.64.86.103 (11/20 23:42)
8F:→ sayaku0210:记得没指定预设是Object 11/21 07:45
9F:推 cjcat2266:用回圈宣告变数只能用这个dynamic variable语法 11/21 10:22
10F:→ cjcat2266:缺点就是没有compile-time type check支援 11/21 10:22
11F:→ cjcat2266:真的要type-safe的话,就用Vector.<Type>吧 11/21 10:23
12F:→ cjcat2266:var v:Vector.<Type> = new Vector.<Type>(); 11/21 10:23
13F:→ cjcat2266:v[i] = new Type(); 这样 11/21 10:24
14F:→ cjcat2266:其实这样效能也比较好,因为dynamic variable存取是使用 11/21 10:25
15F:→ cjcat2266:map,而Vector使用的是阵列 11/21 10:25
16F:→ kirai:谢谢解答 11/21 11:27
刚试了一下
TypeError: Error #1064:
无法将方法 global/flash.utils::getDefinitionByName()当作建构函式呼叫。
冏
※ 编辑: kirai 来自: 61.64.140.40 (11/21 17:39)
17F:推 silase0201:var v:Vector.<Class> = new Vector.<Class>() 11/21 21:05
18F:→ silase0201:v.push(getDefinitionByName("icon"+(i++))) 11/21 21:05
19F:→ silase0201:trace(v) 11/21 21:05
20F:→ kirai:也就是一定要先建立一个向量 or阵列来存放new出来的物件? 11/21 23:47