【发布时间】:2015-01-07 09:48:42
【问题描述】:
在AS3 中,我正在尝试将子代添加到MovieClip 的特定子代中。
为此,我做了以下工作:
for (var r:Number = 0; r < 2; r++) {
sand = new Sand();
sLayers.getChildAt(r).addChild(sand);
}
当sLayers 是MovieClip 父级时,r 是sLayers 的特定子级,sand 是我要添加的子级。
出现以下错误:
1061: Call to a possibly undefined method addChild
through a reference with static type flash.display:DisplayObject.
对不起,我简化了代码,它会占用太多空间。
还有其他方法可以做到这一点吗?还是我很接近但只是错过了一些东西?
【问题讨论】:
-
错误是因为
getChildAt()返回一个显示对象(它可能是也可能不是一个可以有自己的孩子的displayObjectContainer。你需要转换为DisplayObjectContainer或Sprite不得到编译器错误。如果sLayers的任何子代不是DisplayObjectContainer的后代(例如Shape或Bitmap),您将无法向其添加子代。 -
例如:
if(sLayers.getChildAt(r) is Sprite) Sprite(sLayers.getChildAt(r)).addChild(sand);其中演员 Sprite(object) 告诉编译器该对象实际上是一个 Sprite(或它的子类,如 MovieClip)跨度>