簡體   English   中英

動作3:檢查movieClip是否存在

[英]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 ,以thisthisstage

也就是說,一種更合適的方法是保留對添加的影片剪輯的引用,並使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM