AS3无法访问舞台上的MC

时间:2012-03-15 00:36:19

标签: actionscript-3

我在舞台上有54个MC,动态生成。现在我想在滚动时获得他们的x和y位置,但是我遇到了使路径正确的问题,例如。

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);

2 个答案:

答案 0 :(得分:1)

答案非常简单,请使用DisplayObjectContainer对象,在本例中为rootgetChildByName()方法,例如:

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

将您在舞台上的动画片段以数组形式存储起来可能更好一点。

答案 1 :(得分: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()

另外,我强烈建议你创建一个空的movieclip或sprite,并将所有这些mcs添加到它们而不是root。