2012-03-15 140 views
0

我在舞臺上有54個MC,動態生成。現在我想在滾動時獲取它們的x和y位置,但是我在正確獲取路徑時遇到了問題,例如AS3舞臺上無法訪問MC

function copyFlightCellData():void { 

var r; var s; 
var cellData:Array = new Array(); 
for (r = 0; r < 54; r++){ 
    //var copyCellData = new MovieClip(); 
    cellData[r] = Object(root).mc85.name; //["mc"+r+r]; 
    trace("$$$$$$$$$$$$$$$$$$$$$" + cellData[r]); 
} 

} 

我在調試中使用了列表對象,它們在_level0例如

影片剪輯:幀= 1個目標= 「_ level0.mc85」

不知道爲什麼我不能訪問它們的屬性。

這是創建MC的

 // Create copies of flightCell for board grid 
     var my_mc = new flightCell(); 
     my_mc.name = "mc" + i + j; 
     trace("^^^^^^^^^^^^^^****************" + my_mc.name); 
     addChild(my_mc); 

回答

1

的答案很簡單,使用DisplayObjectContainer對象,在這種情況下rootgetChildByName()方法,例如:

var sprite1:Sprite = new Sprite(); 
sprite1.name = "sprite1"; 
addChild(sprite1); 
trace((root as DisplayObjectContainer).getChildByName("sprite1").name); // output : sprite1 

這可能是一個更好的主意,你的舞臺你的影片剪輯存儲在一個數組首先。

+0

謝謝,這樣做的工作 – user1203605 2012-03-15 03:05:29

0

要通過你的名字,當你創建它們分配給它們的名稱來訪問它的代碼。

mc85.name = "mc85"; 

正如我推薦一種替代方法,您可以使用getChildAt(index)http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/DisplayObjectContainer.html?filter_flash=cs5&filter_flashplayer=10.2&filter_air=2.6#getChildAt()

另外,我強烈建議更換你創建一個空的動畫片段或精靈而這一切的MCS加給他們,而不是根。

+0

我用名字創建了MC。我已經添加了一些代碼,以顯示我是如何做到的,以防萬一我也搞砸了! – user1203605 2012-03-15 01:06:33

+0

好的。 Threre並不是完全錯誤的。同樣,getChildAt()會快得多。 – rcdmk 2012-03-15 21:56:36

+0

謝謝。我剛剛在另一個環境中使用了getChildAt,它運行良好。謝謝 – user1203605 2012-03-15 22:37:14