首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MovieClip中识别AS3中的DisplayObjectContainer

在MovieClip中识别AS3中的DisplayObjectContainer
EN

Stack Overflow用户
提问于 2009-10-30 02:23:11
回答 2查看 7.3K关注 0票数 2

在ActionScript 3中,如果我遍历电影剪辑的子片段,它将返回一个DisplayObjectContainer,这是一个DisplayObjects列表。

但是,AS3类型不能将MovieClip标识为MovieClip,而不是数据类型。如何正确识别MovieClip?

我在网上找到了3种解决方案:

解决方案1(我正在使用的解决方案):

首先将MovieClip名称设置为特定名称,然后在迭代过程中,使用child.name.indexOf("specificName") > -1检查子名称。

解决方案2:

使用child.hasOwnProperty("numChildren")标识MovieClip

解决方案3:

使用第三方插件(如FlashDevelop )

哪种解决方案是最好的?或者有没有其他的选择?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-10-30 02:52:49

它实际上在AS3中得到了很大的改进和简化。您可以简单地使用"is“操作符:

代码语言:javascript
复制
for(var i:int = 0; i < containerObj.numChildren; i++) {
    if(containerObj.getChildAt(i) is MovieClip) {
        // do something
    }
}

用于此主题的Flash livedocs有更多的细节。

票数 9
EN

Stack Overflow用户

发布于 2009-10-30 05:20:15

按照richleland的建议使用is关键字。

事先为吹毛求疵道歉,但我忍不住说:

  • getChildAt返回DisplayObject,而不是您在问题中建议的DisplayObjectContainer
  • numChildrenDisplayObjectContainer类的一个属性,MovieClip不是它的唯一派生类。LoaderStageSprite扩展了DisplayObjectContainerMovieClipSprite的子类。因此,如果您希望在子节点上使用特定于电影的操作(如numChildren ),那么gotoAndStop技巧就会失败。
  • 比较名称的正确方法是child.name == "specificName",除非您使用"specificName“作为前缀或后缀,因为所有的子类都是movieclips。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1647674

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档