actionscript-3:检查movieClip是否存在

时间:2010-02-17 16:56:37

标签: actionscript-3

我有一个使用以下代码创建的movieclip:

var thumbContainer:MovieClip = new MovieClip();
thumbContainer.name = "thumbContainer";
stage.addChild (thumbContainer);

如果窗口变大或变小,我希望一切都恢复原状。所以我有一个舞台事件监听器。现在我想看看这个mc是否存在以便重新安装到位。我尝试了不同的方法,但不断收到一个不存在的错误。

1120:访问未定义的属性thumbContainer。

if (this.getChildByName("thumbContainer") != null) {
 trace("exists")
}

if ("thumbContainer" in this) {
 trace("exists")
}

function hasClipInIt (mc: MovieClip):Boolean {
 return mc != null && contains(mc);
}

3 个答案:

答案 0 :(得分:5)

stage.addChild (thumbContainer);
//...
if (this.getChildByName("thumbContainer") != null) 

您正在将thumbContainer添加到stage并使用this检查其存在。将stage更改为thisthis更改为stage

也就是说,更合适的方法是保持对添加的影片剪辑的引用,并使用contains方法检查是否存在。它确定指定的显示对象是DisplayObjectContainer实例的子项还是实例本身的子项。搜索包括整个显示列表,包括此DisplayObjectContainer实例,孙子,曾孙等。

因此,您可以使用stage.contains(thumbContainer);

轻松检查

答案 1 :(得分:2)

如果您在解决错误时遇到问题,可以随时使用try catch

try{
  /// do something that will blow up...
}catch( e:Error ){
  trace( "we had an error but its not fatal now..." );
}

答案 2 :(得分:1)

问题是“舞台”和“这个”不一样......这就是我无法与mc交谈的原因。 这有效:

var thumbContainer:MovieClip = new MovieClip();
thumbContainer.name = "thumbContainer";
addChild (thumbContainer);
if (getChildByName("thumbContainer") != null) {
    trace("exists")
}