在getChildByName / getChild中调用孩子?

时间:2010-07-20 08:04:21

标签: actionscript-3

我发现如果使用getChildAt / getChildByName,我无法定位主MC中的对象。它会归还给我

Error #1119: Access of possibly undefined property someProperty through a reference with static type flash.display:DisplayObject.

我试图使用像

这样的东西
this.getChildAt(0).getChildByName("objectName")....

1 个答案:

答案 0 :(得分:6)

getChildByName和其他get子方法返回类型为DisplayObject的对象。必须在不属于显示对象的属性或方法之前适当地强制转换它。还要记住,这些get子方法属于DisplayObjectContainer类 - 所以你不能像你想要的那样链。

var container:DisplayObjectContainer = DisplayObjectContainer(getChildAt(3));
var mc:MovieClip = MovieClip(container.getChildByName("intro_movie"));
mc.gotoAndStop(4);

//or

var container:DisplayObjectContainer = getChildAt(3) as DisplayObjectContainer;
var mc:MovieClip = container.getChildByName("intro_movie") as MovieClip;
mc.gotoAndStop(4);

//or
MovieClip(DisplayObjectContainer(getChildAt(3)).getChildByName("intro_movie")).gotoAndStop(4);

使用ClassName(obj)语法进行转换会在转换失败时抛出错误;使用obj as ClassName进行转换会返回null而不会出现任何错误 - 这可能会导致混淆,因为它可能会导致意外位置的错误1009(空引用)。