在ActionScript 3中,如果我遍历电影剪辑的子片段,它将返回一个DisplayObjectContainer,这是一个DisplayObjects列表。
但是,AS3类型不能将MovieClip标识为MovieClip,而不是数据类型。如何正确识别MovieClip?
我在网上找到了3种解决方案:
解决方案1(我正在使用的解决方案):
首先将MovieClip名称设置为特定名称,然后在迭代过程中,使用child.name.indexOf("specificName") > -1检查子名称。
解决方案2:
使用child.hasOwnProperty("numChildren")标识MovieClip
解决方案3:
使用第三方插件(如FlashDevelop )
哪种解决方案是最好的?或者有没有其他的选择?
发布于 2009-10-30 02:52:49
它实际上在AS3中得到了很大的改进和简化。您可以简单地使用"is“操作符:
for(var i:int = 0; i < containerObj.numChildren; i++) {
if(containerObj.getChildAt(i) is MovieClip) {
// do something
}
}用于此主题的Flash livedocs有更多的细节。
发布于 2009-10-30 05:20:15
按照richleland的建议使用is关键字。
事先为吹毛求疵道歉,但我忍不住说:
getChildAt返回DisplayObject,而不是您在问题中建议的DisplayObjectContainer。numChildren是DisplayObjectContainer类的一个属性,MovieClip不是它的唯一派生类。Loader、Stage和Sprite扩展了DisplayObjectContainer。MovieClip是Sprite的子类。因此,如果您希望在子节点上使用特定于电影的操作(如numChildren ),那么gotoAndStop技巧就会失败。child.name == "specificName",除非您使用"specificName“作为前缀或后缀,因为所有的子类都是movieclips。https://stackoverflow.com/questions/1647674
复制相似问题