這一陣子學生問到的問題
AS2
使用attachMovie或是createEmptyMovieClip物件時
for(var i:Number = 0;i<2; i++){
this.attachMovie("xxx_mc","name"+i,i)
}
之後可以使用name0.gotoAndPlay(2)
來呼叫name0元件。
AS3
使用new 物件
for(var i:Number = 0;i<2; i++){
var _mc:MovieClip = new ItemMC();
_mc.name = "name" + i;
this.addChild(_mc);
}
為什麼不能使用name0.gotoAndPlay(2)呢
原理是這樣的
AS2
MovieClip的實體名稱, 會被視為是指定容器下的一個變數
以上方為例, 現在的時間軸就多了二個變數, name0和name1,
所以可以直接使用其實體名稱來呼叫
AS3 MovieClip的name是該物件的屬性
不屬於容器物件的變數
所以當然無法使用名稱來呼叫
以上方為例,現在的時間軸就多了二個MovieClip物件, 其name屬性為name0和name1
要呼叫該物件的話, 必需使用
var _myMC:MovieClip = this.getChildByName("name0") as MovieClip;
//抓取子系物件依名稱, 再將其轉換型別成MovieClip
_myMC.gotoAndPlay(2);
//之後就可以使用gotoAndPlay的方法。
AS2
使用attachMovie或是createEmptyMovieClip物件時
for(var i:Number = 0;i<2; i++){
this.attachMovie("xxx_mc","name"+i,i)
}
之後可以使用name0.gotoAndPlay(2)
來呼叫name0元件。
AS3
使用new 物件
for(var i:Number = 0;i<2; i++){
var _mc:MovieClip = new ItemMC();
_mc.name = "name" + i;
this.addChild(_mc);
}
為什麼不能使用name0.gotoAndPlay(2)呢
原理是這樣的
AS2
MovieClip的實體名稱, 會被視為是指定容器下的一個變數
以上方為例, 現在的時間軸就多了二個變數, name0和name1,
所以可以直接使用其實體名稱來呼叫
AS3 MovieClip的name是該物件的屬性
不屬於容器物件的變數
所以當然無法使用名稱來呼叫
以上方為例,現在的時間軸就多了二個MovieClip物件, 其name屬性為name0和name1
要呼叫該物件的話, 必需使用
var _myMC:MovieClip = this.getChildByName("name0") as MovieClip;
//抓取子系物件依名稱, 再將其轉換型別成MovieClip
_myMC.gotoAndPlay(2);
//之後就可以使用gotoAndPlay的方法。
留言