Tengo un problema desagradable. Tengo dos variables de cadena (nombre de clase y métodoestático) almacenar el nombre de una clase y es método estático tengo que llamar:AS3: llamar a un método de clase estática - los nombres de clase y método son cadenas
package {
import flash.display.Sprite;
import flash.utils.getDefinitionByName;
import flash.utils.getQualifiedClassName;
public class ClassPlay extends Sprite {
public function ClassPlay() {
new Foo();
var className:String = 'Foo';
var staticMethod:String = 'bar';
var classClass:Class = getDefinitionByName(className) as Class;
try {
classClass[staticMethod]();
} catch (e:Error) {}
}
}
}
Ésta es la clase de objeto:
package {
public class Foo {
public static function bar():void {trace('Foo.bar() was called.');}
}
}
Funciona a la perfección. El problema al comentar la línea (9º):
// new Foo();
Sin esta línea que sale con una excepción:
ReferenceError: Error #1065: Variable Foo is not defined.
¿Cómo podría hacer esto sin que la creación de instancias? Si eso es imposible, ¿hay alguna forma de instanciar la clase a partir de la variable de cadena? O si todavía es una mala práctica, ¿cómo harías eso? (Tengo que trabajar con esas dos variables de cadena desconocidas.)
Gracias de antemano.
Esto también es un problema común al usar la inyección de dependencia en as3. Para otras opciones, consulte http://www.springactionscript.org/docs/reference/html/Class-inclusion.html (nota: el sitio está caído ahora, pero debería volver al final). –
Muchas gracias por el enlace;) El sitio está arriba nuevamente. – itarato