Identifizieren MovieClip- in AS3 unter Display
-
22-07-2019 - |
Frage
in Actionscript 3, wenn ich Schleife durch die Kinder eines Movieclips, wird es eine Display zurückkehren, die eine Liste von Displayobjects ist.
Allerdings kann die AS3 typeof nicht identifizieren MovieClip- als MovieClip- nun ein Objekt ist, anstelle eines Datentyps. Wie kann ich MovieClip- richtig identifizieren?
Ich fand 3 Lösungen online:
Lösung 1 (die Lösung, die ich verwende):
Stellen Sie zuerst den MovieClip- Namen ein bestimmte Namen, dann in der Iterierte Prozess, überprüfen Sie den Namen der Kinder mit child.name.indexOf ( "specificName")> -1
Lösung 2:
verwenden child.hasOwnProperty ( "numChildren") eine MovieClip- zu identifizieren
Lösung 3:
verwenden 3rd-Party-Plug-in wie FlashDevelop
Welche Lösung ist die beste? oder gibt es Alternativen?
Lösung
Es ist eigentlich viel verbessert und vereinfacht in AS3. Sie können einfach die Verwendung „ist“ Operator:
for(var i:int = 0; i < containerObj.numChildren; i++) {
if(containerObj.getChildAt(i) is MovieClip) {
// do something
}
}
Andere Tipps
Verwenden is
Stichwort als richleland vorgeschlagen.
Apologies im Voraus für Erbsenzählerei, aber ich kann nicht widerstehen sagen, dass:
-
getChildAt
kehrtDisplayObject
, nichtDisplayObjectContainer
, wie Sie in der Frage vorgeschlagen. -
numChildren
ist eine Eigenschaft derDisplayObjectContainer
Klasse undMovieClip
ist nicht die einzige abgeleitete Klasse davon.Loader
,Stage
undSprite
DisplayObjectContainer
erstreckt.MovieClip
ist eine Unterklasse vonSprite
. Daher numChildren Trick wird scheitern, wenn Sie MovieClip- spezifische Aktionen wiegotoAndStop
auf dem Kind verwenden wollen. - Die richtige Weg, um den Namen zu vergleichen wäre
child.name == "specificName"
, wenn Sie „specificName“ als Präfix oder Suffix für alle Kinder verwenden, die Videoclips sind.