2009-07-27 25 views

Antwort

7

Sie die Konstrukteurs-Eigenschaft des Objekts verwenden können, Klasse des Objekts auf das Objekt einen Verweis zu erhalten, können Sie dann die statische Variable rufen aus diesem Klassenobjekt

package{ 
     import flash.display.Sprite; 

     public class Test extends Sprite{ 

      public function Test(){ 
       var variable : A = new A(); 
       trace((variable as Object).constructor.a()); 

      } 
     } 
    } 
    class A{ 
     static function a() : String{ 
      return "test"; 
     } 
    } 
+0

+1 zur Vereinfachung. –

+0

Beachten Sie, dass die Konstruktoreigenschaft in einigen proxybasierten Klassen wie XML und XMLList nicht funktioniert. –

+0

unbedeutend bearbeitet, um die gestellte Frage besser zu beantworten –

1

Holen Sie sich die Klassenreferenz nach ihrer Instanz.

var className:string = getQualifiedClassName(object); //returns the class name  
var classObj:Class = getDefinitionByName(className) as Class; //get a Class object 

Auch diese sehen - How to get type of variable? and instantiate it?

+0

Nur festgestellt, dass Sie eine statische Methode wahrscheinlich nicht einmal mit einem Verweis auf das Klassenobjekt aufrufen können. Ich denke, diese Antwort ist nur halb da. Ich habe keinen Zugang zum Flex Compiler, sorry. –

+0

Ja, Sie können, überprüfen Sie meine Antwort oben. – loungerdork

4

Es gibt einen einfacheren Weg, aber dies setzt voraus, dass die statischen Funktionen existieren.

var myclass:Class = getDefinitionByName("MyClass") as Class; 
myclass["myStaticMethod"](); 

Es überraschte mich irgendwie, dass diese Syntax funktioniert.

+0

Funktioniert myClass.myStaticMethod() nicht? –

+0

Es wird den Compiler nicht übergeben. 1180: Aufruf einer möglicherweise undefinierten Methode myStaticMethod. – loungerdork

Verwandte Themen