2010-02-17 16 views
1

我有下面的代碼創建了一個影片剪輯:動作-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); 
} 

回答

1

的問題是,「舞臺」和「本」是不一樣的......這就是爲什麼我不能跟的MC。 這個工程:

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

您應該將Amarghosh標記爲正確答案,因爲您的解決方案基於他的答案。沒關係。發佈完整的解決方案以展示您如何解決初始描述的問題。但是,通常情況下,您將自己標記爲答案的作者,因爲它實際上是基於另一個答案,這有助於您找到解決方案。如果沒有,你會被卡住。因此,請相信原作者,即使他沒有提供您需要的確切線條 - 顯然這是不可能的,因爲我們都沒有完整的代碼。 –

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

要添加到thumbContainerstage檢查與this存在。將stage更改爲thisthisstage

也就是說,更合適的方法是保留對添加的影片剪輯的引用,並檢查contains方法是否存在。它確定指定的顯示對象是否爲DisplayObjectContainer實例的子項或實例本身。搜索包括整個顯示列表,包括這個DisplayObjectContainer實例,孫子,曾孫,等等。

因此,你可以很容易地檢查使用stage.contains(thumbContainer);

+0

那麼我的檢查工作,這樣我就可以檢查MC存在,但現在我想用它做點什麼。這個(實例名稱)不會工作: var thumbContainer:MovieClip = new MovieClip(); thumbContainer.name =「test」; thumbContainer.x = 10; stage.addChild(thumbContainer); (this.getChildByName(「test」)== null){ \t trace(「something」); //作品! \t this.getChildByName(「test」)。x = 10; //不適用! \t stage.test.x = 10; //不適用! } – Edwinistrator

2

,如果你有麻煩射擊的錯誤,你總是可以求助於嘗試捕捉

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

這是一個很好的把戲! – Edwinistrator

+0

經過大量的研究,只有這個解決方案爲我工作:) – mdikici