2009-08-26 6 views
0

Ich habe gerade diese Frage gestellt, aber ich kann nicht sehen, ob sie irgendwo gepostet hat, also entschuldige ich mich wenn es ein Duplikat ist.Wie alle Symbole im Bibliotheksordner zur Laufzeit zur Laufzeit hinzugefügt werden können

Für ein Flash CS4-Projekt importiere ich ständig neue Bilder, wandle sie in MovieClips um und speichere sie in der Bibliothek unter dem Ordner "Ornaments". Alle diese Ornamente müssen an einem bestimmten Ort auf der Bühne sein, wenn das Programm initialisiert wird. Anstatt die neuen Symbole jedes Mal auf die Bühne zu ziehen, wenn ich eine neue hinzufüge, ist es möglich, alle Symbole im Bibliotheksordner "Ornament" zur Laufzeit zur Bühne hinzuzufügen?

Dank

Antwort

1

Sie können es im Code tun, wenn Sie wollen, aber Sie würden immer noch die Namen der Symbole auf den Code hinzufügen. Das heißt, der Ordner dient lediglich der Organisation innerhalb der CS4-Bibliothek und wird nicht in Code (AFAIK) übersetzt.

Um das Element in AS3 zu instanziieren, klicken Sie einfach mit der rechten Maustaste auf das Symbol in der Bibliothek und aktivieren Sie das Kontrollkästchen "Exportieren für ActionScript". Wenn Sie es nicht sehen können, klicken Sie auf die Schaltfläche Erweitert. Es setzt die Klasse auf den Namen des Symbols. Dies ist die Klasse, die Sie in ActionScript instanziieren können, um eine Instanz auf die Bühne zu stellen.

Sie könnten ein Array der Verzierung Namen und Schleife durch sie halten sie auf die Bühne und fügte hinzu:

var ornaments:Array = [OrnamentGold, OrnamentSilver, OrnamentBronze]; 

for each(var ornament:Class in ornaments) 
{ 
    var ornamentClip:MovieClip = new ornament(); 
    addChild(ornamentClip); 
} 

Wenn Sie alle Ihre Instanzen das gleiche mit nur einem nachgestellten Ziffer erhöht nennen, können Sie sich sparen können einige Zeit und nur eine einzelne Nummer erhöhen:

const NUM_ORNAMENTS:int = 5; 

for(var i:int = 0; i < NUM_ORNAMENTS; i++) 
{ 
    // ornaments are names Ornament0, Ornament1, Ornament2, etc. in the library 
    var ornamentClass:Class = new getDefinitionByName("Ornament" + i) as Class; 
    var ornamentClip:MovieClip = new ornamentClass(); 
    addChild(ornamentClip); 
} 
+0

Das sieht gut aus. Das war, was ich versuchen wollte. Ich wollte nur wissen, ob es eine Möglichkeit gibt, mit Actionscript auf die Ordner zuzugreifen. Vielen Dank! –

+0

Das hat gut funktioniert! –