在adobe动画中按名称访问动态动画片段时遇到问题

时间:2019-02-14 11:00:41

标签: actionscript-3

我已经做了一百万次了,但是在这里没有用。

我在animate.fla中有一个game_mc。在此剪辑中,我生成了一个视图目标区域以在其上放置石头。好的,TargetArea是我库中的一个简单的Movieclip。

我可以看到所有内容,我可以单击该区域并获得适当的名称,我可以获取game_mc中的剪辑名称。

但是我无法通过使用game_mc [clipname]

来访问它
for (var i:int = 1; i<= 20; i++){
    var targetArea:TargetArea = new TargetArea();
    targetArea.txt.text = String(i);
    var modu = ((i-1) %5);
    targetArea.x = 100 + modu * 340;
    var abs = int((i-1)  / 5);
    targetArea.name = "targetarea_" + String(i)+ "_mc";
    targetArea.mouseChildren = false;
    targetArea.y = 100 + (abs * 200) ;
    game_mc.addChild(targetArea);
}

for(var x:int=0;x < game_mc.numChildren;x++) {
    trace (game_mc.getChildAt(x).name);
}

for (var i:int = 1; i< 20; i++){
    var targetName:String = "targetarea_" + i + "_mc"               
    trace( game_mc[targetName].x);
}

1 个答案:

答案 0 :(得分:0)

我认为您分配给TargetArea实例的名称不会自动转换 附加到DisplayObject的属性中。据我记得 使用数组访问(通常在AS3之前运行)的非固定方式访问MovieClips。 更为优雅的解决方案是使用getChildByName()检索孩子。

trace(game_mc.getChildByName(targetName).x);

另外,如果game_mc是MovieClip或动态类的实例,则可以使用以下方法使TargetArea实例成为其属性:

game_mc[targetArea.name] = targetArea;

这样,您之后便可以使用 game_mc [name] .property 来访问它们。