Klassen dynamisch initialisieren

EM-Autotechnik

Erfahrenes Mitglied
Hey Ho Leute ;)

Habe da mal eine Frage, die ich mir trotz langem Studieren der Macromedia Referenz nicht beantworten konnte...

Ich setze nun auf Euer Wissen ;)

Fakten:
Flash MX 2004
AS 2.0

Angenommen ich habe ein Array mit Klassen-Namen (also NUR deren Namen als String und nicht das Objekt an sich!):

PHP:
var c_array:Array = new Array("Basics", "Exception", "MyXml");

Dieses Array möchte ich nun fetchen und dabei die Elemente zum initialisieren der entsprechenden Klasse verwenden (folgender Code funktionier NICHT, soll nur meine Absichten darstellen ;) ):

PHP:
var my_Objects:Array;

for(var key in class_array){
	my_Objects.c_array[key]:c_array[key] new c_array[key]();
}

Ich weiss, gehört sicher nicht zu den üblichen Problematiken...
Wäre aber ÜBERGLÜCKLICH, wenn mir da einer von Euch weiter helfen könnte!

voll merci :D

mfg Seb
 
Hi,

auf den ersten Blick würde ich sagen: Du kannst bei der strikten Typisierung keinen String mit dem Typbezeichner übergeben (c_array[key] ist ja ein String); auch so etwas:
PHP:
var a:String = "String";

b:a = new String();
wird nicht funktionieren.

Auch lässt sich aus einem String keine Instanz bilden:
PHP:
var a:String = "String";

var b = new a();
Du bräuchtest dafür schon eine eval()-Funktion, die so wie bei JavaScript oder PHP implementiert ist; eval in Flash kann allerdings nur Bezeichner auflösen.

Ich befürchte, Du wirst nicht drum herum kommen, die möglichen Bezeichner mit switch zu testen und hart zu codieren.

Gruß
.
 
Zuletzt bearbeitet:
Danke zunächst für die kompetente Antwort!

Ich sehe das genau so!

Dachte jedoch, dass AS das irgendwie stützen sollte :D

Schade drum... dann halt "hart" codieren :(

(vielleich fällt ja noch einem dazu was ein, deshalb markiere ich mal nicht als "Erledigt" ;) )

mfg Seb
 
Zurück