[英]Identify MovieClip in AS3 among DisplayObjectContainer
在ActionScript 3中,如果我遍歷影片剪輯的子代,它將返回一個DisplayObjectContainer,它是一個DisplayObjects列表。
但是,AS3 typeof無法識別MovieClip,因為MovieClip現在是一個對象,而不是數據類型。 如何正確識別MovieClip?
我在網上找到3個解決方案
解決方案1(我正在使用的解決方案):
首先將MovieClip名稱設置為特定名稱,然后在迭代過程中,使用child.name.indexOf(“specificName”)> -1檢查子項的名稱
解決方案2:
使用child.hasOwnProperty(“numChildren”)來標識MovieClip
解決方案3:
使用像FlashDevelop這樣的第三方插件
哪種解決方案最好? 還是有其他選擇嗎?
它在AS3中實際上得到了很大的改進和簡化。 您只需使用“is”運算符:
for(var i:int = 0; i < containerObj.numChildren; i++) {
if(containerObj.getChildAt(i) is MovieClip) {
// do something
}
}
本主題的Flash liveocs有更多細節。
使用is
關鍵字作為richleland建議。
提前道歉,但我無法抗拒說:
getChildAt
返回DisplayObject
,而不是問題中建議的DisplayObjectContainer
。 numChildren
是DisplayObjectContainer
類的屬性,而MovieClip
不是它的唯一派生類。 Loader
, Stage
和Sprite
擴展了DisplayObjectContainer
。 MovieClip
是Sprite
的子類。 因此,如果你想在孩子身上使用像gotoAndStop
這樣的movieclip特定動作,numChildren技巧就會失敗。 child.name == "specificName"
除非您使用“specificName”作為child.name == "specificName"
片段的所有子項的前綴或后綴。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.