2012-04-15 6 views
-1

Ich habe eine Menge MovieClips in einer Klasse. Gibt es eine effizientere Möglichkeit, eine Funktion auf jede andere Instanz in der Klasse anzuwenden?Actionscript 3.0 Holen Sie alle Instanzen einer Klasse?

var textArray:Array = [ 
    interludes.interludeIntro.interludeBegin1, 
    interludes.interludeIntro.interludeBegin2, 
    interludes.interludeIntro.interludeBegin3, 
    interludes.interludeIntro.interludeBegin4, 
    interludes.interludeIntro.interludeBegin5, 
    interludes.interludeIntro.interludeBegin6, 
    interludes.interludeIntro.interludeBegin7, 
    //... ... ... 
    interludes.interludeIntro.interludeBegin15 
];          
for each (var interludeText:MovieClip in interludeBeginText) 
{ 
    interludeText.alpha = 0 //clear all text first 
} 

Auch aus irgendeinem Grund nicht funktioniert:

interludes.interludeIntro.alpha = 0; 

Es stellt sich permanent die Klasse unsichtbar, auch wenn ich versuche es später mit sichtbaren bestimmte Instanzen zu machen:

interludes.interludeIntro.interludeBegin1.alpha = 1; 

Ich habe keine Ahnung, warum das oben genannte nicht funktioniert. Ich möchte jede einzelne Instanz in der Klasse interludeIntro unsichtbar machen, aber ich möchte bestimmte Instanzen später sichtbar machen.

(btw habe ich keine Ahnung, wie Code auf dieser Website einfügen, die Taste „Code“ macht nichts, so verzeihen Sie die schlechte Formatierung)

+1

Nehmen Sie sich einen Moment Zeit, http://stackoverflow.com/editing-help zu lesen. – spender

+4

Das Verhalten von 'interludes.interludeIntro.alpha = 0;' wird erwartet, weil alle Kinder ihr Alpha mit dem Alpha ihrer Eltern multiplizieren. Wenn Sie also den Alpha-Wert eines Containers auf "0" setzen, haben alle Kinder einen effektiven Alpha-Wert von 0. – Torious

Antwort

1

Ich bin nicht wirklich sicher, was Sie fragen, Es kann jedoch nützlich sein, dass Sie in ActionScript anhand des Namens auf Eigenschaften verweisen können, z. B. myObject["someProperty"].

dass verwenden, können Sie über Eigenschaften durchlaufen, wenn sie eine gewisse Namensschema folgen, so zum Beispiel:

for (var i:int = 1; i <= 15; i ++) 
    interludes.interludeIntro["interludeBegin" + i].alpha = 0; 

Das iteriert über interludes.interludeIntro.interludeBegin1 durch ...15 und setzt ihre alpha Eigenschaften 0.

1

Wenn Sie das tun:

interludes.interludeIntro.alpha = 0; 

Sie den Movieclip und alle seine Kinder unsichtbar werden.

Also später, wenn Sie das tun:

interludes.interludeIntro.interludeBegin1.alpha = 1; 

Sie den Movieclip sichtbar zu machen, aber da seine Eltern immer noch unsichtbar sind, können Sie nichts sehen. Die Lösung besteht darin, die Videoclips durchzulaufen und sie unsichtbar/sichtbar zu machen.

// Keep the parent visible at all time 
interludes.interludeIntro.alpha = 1; 

for (var i:int = 0; i < textArray.length; i++) { 
    textArray[i].alpha = 0; 
} 

// Now this will work: 
interludes.interludeIntro.interludeBegin1.alpha = 1; 
Verwandte Themen