簡體   English   中英

在DisplayObjectContainer中識別AS3中的MovieClip

[英]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
  • numChildrenDisplayObjectContainer類的屬性,而MovieClip不是它的唯一派生類。 LoaderStageSprite擴展了DisplayObjectContainer MovieClipSprite的子類。 因此,如果你想在孩子身上使用像gotoAndStop這樣的movieclip特定動作,numChildren技巧就會失敗。
  • 比較名稱的正確方法是child.name == "specificName"除非您使用“specificName”作為child.name == "specificName"片段的所有子項的前綴或后綴。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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