[ascoders] Re: AW: String in Klassenreferenz umwandeln?

  • From: Martin Bücker <email@xxxxxxxxxxxxxxxxx>
  • To: ascoders@xxxxxxxxxxxxx
  • Date: Sat, 09 Jun 2007 22:35:58 +0200

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   : //www.freelists.org/archives/ascoders/
RSS      : //www.freelists.org/archives/ascoders/feed.rss
Optionen : //www.freelists.org/list/ascoders
--------------------------------------------------------------

Other related posts: