我发现如果使用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")....
答案 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(空引用)。