[英]actionscript-3: check if movieClip exists
我有一个使用以下代码创建的动画片段:
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);
}
stage.addChild (thumbContainer);
//...
if (this.getChildByName("thumbContainer") != null)
您正在将thumbContainer
添加到stage
并使用this
检查它的存在。 修改stage
,以this
或this
对stage
。
也就是说,一种更合适的方法是保留对添加的影片剪辑的引用,并使用contains方法检查是否存在。 它确定指定的显示对象是DisplayObjectContainer
实例的子级还是实例本身。 搜索包括整个显示列表,包括该DisplayObjectContainer
实例,孙子孙,曾孙子孙等等。
因此,您可以使用stage.contains(thumbContainer);
轻松检查stage.contains(thumbContainer);
如果您在发射错误时遇到麻烦,可以随时尝试使用
try{
/// do something that will blow up...
}catch( e:Error ){
trace( "we had an error but its not fatal now..." );
}
问题是“舞台”和“这个”不一样……这就是为什么我不能和MC交谈的原因。 这有效:
var thumbContainer:MovieClip = new MovieClip();
thumbContainer.name = "thumbContainer";
addChild (thumbContainer);
if (getChildByName("thumbContainer") != null) {
trace("exists")
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.