Ho un brutto problema. Ho due variabili stringa (nome di classe e staticmethod) memorizzare il nome di una classe ed è metodo statico devo chiamare:AS3: chiama un metodo di classe statico: i nomi di classi e metodi sono stringhe
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) {}
}
}
}
Questa è la classe soggetto:
package {
public class Foo {
public static function bar():void {trace('Foo.bar() was called.');}
}
}
Funziona perfettamente. Il problema quando si commento questo (9 °) Linea:
// new Foo();
Senza questa linea esce con un'eccezione:
ReferenceError: Error #1065: Variable Foo is not defined.
Come potrei fare questo senza che esemplificazione? Se ciò è impossibile, c'è un modo per istanziare la classe dalla variabile stringa? O se è ancora una cattiva pratica, come faresti? (Devo lavorare con queste due variabili stringa sconosciute.)
Grazie in anticipo.
Questo è anche un problema comune quando si utilizza l'iniezione di dipendenza in as3. Per altre opzioni, controlla http://www.springactionscript.org/docs/reference/html/Class-inclusion.html (nota: il sito è inattivo ora, ma dovrebbe essere tornato alla fine). –
Grazie mille per il collegamento;) Il sito è di nuovo attivo. – itarato