我有一个使用以下代码创建的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);
}
答案 0 :(得分:5)
stage.addChild (thumbContainer);
//...
if (this.getChildByName("thumbContainer") != null)
您正在将thumbContainer
添加到stage
并使用this
检查其存在。将stage
更改为this
或this
更改为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")
}