MX04: z.b. "mx.controls.CheckBox" von String in Klassenpfad umwandeln ...?

Irresponder

Erfahrenes Mitglied
Ich programmiere gerade eine kleine Gestaltungshilfe für Flash auf Basis von XML, mit der es möglich sein soll Komponenten mittels XML zu erzeugen. 2 Probleme auf die ich jetzt gestoßen bin ist zum einem das es mir nicht möglich den Klassenpfad (z.b. mx.controls.CheckBox) der als String aus der XML-Datei eingelesen in das Object umzuwandeln das die Funktion createClassObject übergeben wissen möchte. Ich dachte anfang an die Object()-Funktion nur leider:
PHP:
trace(mx.controls.CheckBox);
// liefert "[type Function]"

trace(Object("mx.controls.CheckBox"))
// liefert nur den eigentlich übegebenen String zurück

eval() habe ich auch schon probiert, funktioniert allerdings auch nicht (-> Blah ist kein/e Objekt oder Eigenschaft). Hat vielleicht jemand eine Idee wie ich den Klassenpfad umwandeln kann? Oder muss ich statisch vorgehen und eine art Klassenpfad-Array erstellen?

Anderes OOP-Problem das ich habe ist mit der Zuweisung von Objektinhalten die in Flash normalerweise wie folgt gehandelt werden (ebenfalls als String...):
PHP:
// funktioniert 
var o = new Object();
o = { var1: "wert1", var2: 123 } // usw.
trace(o.var1);
// liefert "wert1"

// funktionier nicht! :-(
var s = new String();

s = "{ var1: "wert1", var2: 123 }";
o = Object(s);
trace(o.var1);
// liefert undefined!

Vielleicht hatte jemand schon mal ähnliche Probleme und kann mir evtl. weiterhelfen - wäre supercool, bedauerlicherweise findet man noch nicht so viel zu MX2004.
 
Hi,

versuchs mal bei der 'Konkurrenz' im Flashforum, da ist mehr zu 2004 - ich persönlich stelle erst im Laufe der nächsten 4Monate auf 04 um, zB....

B.
 
Mh, ok ich denke das 1. Problem hat sich so gut wie erledigt:
PHP:
// alternative Möglichkeit der Komponenten Erzeugung
new_cb = createObject("CheckBox", "new_cb", 5, {label:"my label"});
// Damit muss man also nur den ActionScript namen der entsprechenden Komponente angeben den man unter Verknüpfung einsehen kann (Bibliothek)

Naja gut dann werde ich jetzt dann mal meinen Object-Parser schreiben. Im Flashforum bin ich auch aktiv, nur da konnte mir auch keiner helfen - noch nicht. Allerdings kann ich bestätigen das dort wesentlich mehr zu MX2004 zu finden ist. Da ist auch alles schön voneinander getrennt hier ist alles so durcheinander ^^

Trotzdem Danke schon mal für eure Hilfe ...

Gruß Irresponder
 
Ich denke Problem 2 ist auch durch...

PHP:
// wandelt object-string z.b. { a: "abs", b: 123, c: true } in entsprechende objekte um...	

	private function stringToObject(objStr: String): Object {
		var c, p, v = new Array();
		var o = Object();
		var t = objStr.split(" ").join("");
		var vs, ps = new String();
		
		t = trim(t.substring(t.indexOf("{")+1,t.lastIndexOf("}")))
		
		c = t.split(',');
		for (var i=0; i<c.length; i++) {
			p = c[i].split(':');
			ps = p[0];
			vs = p[1];
			switch (vs.charAt(0)) {
				case '"': case "'":
					vs = vs.substring(vs.indexOf('"')+1,vs.lastIndexOf('"'));
					o[ps] = String(vs);
				break;
				
				case '{':
					p[ps] = stringToObject(vs);					
				break;
				
				default:
					o[ps] = vs;
				break;
			}
			trace('!'+ps+' '+vs);
		}
		return o;
	}
 

Neue Beiträge

Zurück