2012-03-15 142 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