[ascoders] Re: AW: Re: AW: String in Klassenreferenz umwandeln?
- From: Martin Bücker <email@xxxxxxxxxxxxxxxxx>
- To: ascoders@xxxxxxxxxxxxx
- Date: Sun, 10 Jun 2007 23:37:32 +0200
Hallo Peter,
warum man den kompletten Paketpfad trotz import-Anweisung zur Klasse
angeben muss, kann ich Dir auch nicht sagen. Da musst Du mal bei Adobe
nachfragen ;)
Die eval-Funktion sollte man immer mit Bedacht einsetzen, obwohl man
damit nicht so evil sein kann wie unter Javascript. Aber wenn es
nützlich ist ... warum nicht?!
Ansonsten solltest Du Dir vielleicht Gedanken über Dein
Applikationsdesign machen, ggf. gibt es ja eine bessere Lösung, die ohne
eval auskommt.
Gruß
Martin
Peter schrieb:
Super,
So funktionierts, wichtig ist definitive der Klassenpfad, warum kann ich
nicht sagen da ja normalerweise die Beziehung durch die Importanweisung
hergestellt wird. Damit die Klasse vom Compiler auch eingebunden wird habe
ich im Constructor einen inititlaisierungsaufruf auf die Klasse geschrieben.
Was Du mit einem nochmaligen Import meinst hab ich nicht richtig verstanden,
funktioniert so aber auch.
Danke
Peter
Ps: Sagt man nicht immer eval is evil ;]
Ein paar Freunde von mir meinten mit eval strings in Klassen umwandeln hört
sich dreckig an, aber ich wüsste sonst nicht wie ich Animationsarten
(Klassen) per XML sonst übergeben könnte :] Eigentlich siehts nämlich
relativ sauber aus.
-----Ursprüngliche Nachricht-----
Von: ascoders-bounce@xxxxxxxxxxxxx [mailto:ascoders-bounce@xxxxxxxxxxxxx] Im
Auftrag von Martin Bücker
Gesendet: Samstag, 9. Juni 2007 22:36
An: ascoders@xxxxxxxxxxxxx
Betreff: [ascoders] Re: AW: String in Klassenreferenz umwandeln?
Hallo Peter!
Probiere es mal mit eval unter Angabe des kompletten Paketpfades.
Also so:
------------
import classes.StrongTransition;
class classes.View {
function View(){}
public function showClip(className:String) {
classRef = eval("classes." + className);
classRef.showClip();
}
}
------------
Wichtig ist, dass Du die dynamisch angesprochenen Klassen, falls Sie
ausschließlich dynamisch angesprochen werden, in der FLA vor dem Starten
deines Hauptprogramms irgendwie ansprichst, damit der Compiler diese
einbindet. Z.B. durch erneutes importieren mit:
import classes.StrongTransition;
Gruß
Martin
Peter schrieb:
Ich habs jetzt erstmal ziemlich dämlich gelöst und zwar so
public function showClip(evtObj:Object) {
// Führt eigentlich dann die Blendenanimation
aus um den neuen Clip darzustellen.
switch (evtObj.parameters.ani) {
case "StrongTransition":
trace(StrongTransition.showClip());
break;
}
}
Trotzdem würde mich es riesig freuen wenn mir einer sagen kann wie ich
die Klasse direkt aufrufen kann.
Ich hatte ja gehofft das es gehen könnte
this[evtObj.parameters.ani].showClip()
Bin mal gespannt ob sich noch jemand dazu meldet!
Grüße aus Köln
Peter
------------------------------------------------------------------------
*Von:* ascoders-bounce@xxxxxxxxxxxxx
[mailto:ascoders-bounce@xxxxxxxxxxxxx] *Im Auftrag von *Peter
*Gesendet:* Samstag, 9. Juni 2007 14:44
*An:* ascoders@xxxxxxxxxxxxx
*Betreff:* [ascoders] String in Klassenreferenz umwandeln?
Hi Zusammen,
gibt es eine Möglichkeit eine von mir statische Klasse innerhalb einer
anderen Klasse als String zu übergeben und dann den übergebenen String
als Klasse aufzurufen?
Wenn ich nämlich im View die Klasse direkt eingebe funktioniert es,
kommt der Klassenname aber als String bin ich nicht in der Lage durch
eval oder andere Möglichkeiten diesen String wieder in eine
Klassenreferenz oder einen Klassennamen umzuwandeln.
Gibt es da irgendeine Möglichkeit, da ich der Klasse gerne andere
Klassen anhand von einem XML Dokument übergeben würde?
Grüße Peter
Ps. Im Netz habe ich nur ein paar Beispiele wie z.B.
getClassPathByString oder so gefunden aber da bekomme ich bei der
Ausgabe immer nur ein undefined.
Und mit dem UIObject.createObject komme ich glaube ich auch nicht weiter
da es ja nur für Komponenten von Flash ist, oder?
Simples Beispiel…
// Die statische Klasse
class classes.StrongTransition {
function StrongTransition(){}
static function showClip() {
trace("ZEIG MICH");
}
}
// Die Klasse die ausführen soll
import classe.StrongTransition;
class classes.View {
function View(){}
//Im String wird die statische Klasse übergeben “StrongTransition“
public function showClip(test:String) {
var class = test;
class.showClip();
}
--------------------------------------------------------------
Archiv : http://www.freelists.org/archives/ascoders/
RSS : http://www.freelists.org/archives/ascoders/feed.rss
Optionen : http://www.freelists.org/list/ascoders
--------------------------------------------------------------
--------------------------------------------------------------
Archiv : http://www.freelists.org/archives/ascoders/
RSS : http://www.freelists.org/archives/ascoders/feed.rss
Optionen : http://www.freelists.org/list/ascoders
--------------------------------------------------------------
--------------------------------------------------------------
Archiv : http://www.freelists.org/archives/ascoders/
RSS : http://www.freelists.org/archives/ascoders/feed.rss
Optionen : http://www.freelists.org/list/ascoders
--------------------------------------------------------------
- Follow-Ups:
- [ascoders] AW: Re: AW: Re: AW: String in Klassenreferenz umwandeln?
- From: Timo Hölzer
- References:
Other related posts:
- » [ascoders] AW: Re: AW: String in Klassenreferenz umwandeln?
- » [ascoders] AW: Re: AW: String in Klassenreferenz umwandeln?
- » [ascoders] Re: AW: Re: AW: String in Klassenreferenz umwandeln?
Super, So funktionierts, wichtig ist definitive der Klassenpfad, warum kann ich nicht sagen da ja normalerweise die Beziehung durch die Importanweisung hergestellt wird. Damit die Klasse vom Compiler auch eingebunden wird habe ich im Constructor einen inititlaisierungsaufruf auf die Klasse geschrieben. Was Du mit einem nochmaligen Import meinst hab ich nicht richtig verstanden, funktioniert so aber auch. Danke Peter Ps: Sagt man nicht immer eval is evil ;] Ein paar Freunde von mir meinten mit eval strings in Klassen umwandeln hört sich dreckig an, aber ich wüsste sonst nicht wie ich Animationsarten (Klassen) per XML sonst übergeben könnte :] Eigentlich siehts nämlich relativ sauber aus. -----Ursprüngliche Nachricht----- Von: ascoders-bounce@xxxxxxxxxxxxx [mailto:ascoders-bounce@xxxxxxxxxxxxx] Im Auftrag von Martin Bücker Gesendet: Samstag, 9. Juni 2007 22:36 An: ascoders@xxxxxxxxxxxxx Betreff: [ascoders] Re: AW: String in Klassenreferenz umwandeln? Hallo Peter! Probiere es mal mit eval unter Angabe des kompletten Paketpfades. Also so: ------------ import classes.StrongTransition; class classes.View { function View(){} public function showClip(className:String) { classRef = eval("classes." + className); classRef.showClip(); } } ------------Wichtig ist, dass Du die dynamisch angesprochenen Klassen, falls Sie ausschließlich dynamisch angesprochen werden, in der FLA vor dem Starten deines Hauptprogramms irgendwie ansprichst, damit der Compiler diese einbindet. Z.B. durch erneutes importieren mit:
import classes.StrongTransition; Gruß Martin Peter schrieb:
Ich habs jetzt erstmal ziemlich dämlich gelöst und zwar sopublic function showClip(evtObj:Object) {// Führt eigentlich dann die Blendenanimation aus um den neuen Clip darzustellen.switch (evtObj.parameters.ani) { case "StrongTransition":trace(StrongTransition.showClip());break; } }Trotzdem würde mich es riesig freuen wenn mir einer sagen kann wie ich die Klasse direkt aufrufen kann.Ich hatte ja gehofft das es gehen könnte this[evtObj.parameters.ani].showClip()Bin mal gespannt ob sich noch jemand dazu meldet!Grüße aus KölnPeter------------------------------------------------------------------------*Von:* ascoders-bounce@xxxxxxxxxxxxx [mailto:ascoders-bounce@xxxxxxxxxxxxx] *Im Auftrag von *Peter*Gesendet:* Samstag, 9. Juni 2007 14:44 *An:* ascoders@xxxxxxxxxxxxx *Betreff:* [ascoders] String in Klassenreferenz umwandeln?Hi Zusammen,gibt es eine Möglichkeit eine von mir statische Klasse innerhalb einer anderen Klasse als String zu übergeben und dann den übergebenen String als Klasse aufzurufen?Wenn ich nämlich im View die Klasse direkt eingebe funktioniert es, kommt der Klassenname aber als String bin ich nicht in der Lage durch eval oder andere Möglichkeiten diesen String wieder in eine Klassenreferenz oder einen Klassennamen umzuwandeln.Gibt es da irgendeine Möglichkeit, da ich der Klasse gerne andere Klassen anhand von einem XML Dokument übergeben würde?Grüße PeterPs. Im Netz habe ich nur ein paar Beispiele wie z.B. getClassPathByString oder so gefunden aber da bekomme ich bei der Ausgabe immer nur ein undefined.Und mit dem UIObject.createObject komme ich glaube ich auch nicht weiter da es ja nur für Komponenten von Flash ist, oder?Simples Beispiel…// Die statische Klasseclass classes.StrongTransition { function StrongTransition(){}static function showClip() { trace("ZEIG MICH"); }}// Die Klasse die ausführen soll import classe.StrongTransition;class classes.View {function View(){}//Im String wird die statische Klasse übergeben “StrongTransition“ public function showClip(test:String) { var class = test;class.showClip();}
-------------------------------------------------------------- Archiv : http://www.freelists.org/archives/ascoders/ RSS : http://www.freelists.org/archives/ascoders/feed.rss Optionen : http://www.freelists.org/list/ascoders -------------------------------------------------------------- -------------------------------------------------------------- Archiv : http://www.freelists.org/archives/ascoders/ RSS : http://www.freelists.org/archives/ascoders/feed.rss Optionen : http://www.freelists.org/list/ascoders --------------------------------------------------------------
- [ascoders] AW: Re: AW: Re: AW: String in Klassenreferenz umwandeln?
- From: Timo Hölzer