Mam brzydki problem. Mam dwie zmienne String (className i staticmethod) zachować nazwę klasy i jest to metoda statyczna Muszę zadzwonić:AS3: wywołanie metody klasy statycznej - nazwy klas i metod są łańcuchami
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) {}
}
}
}
Jest to klasa Temat:
package {
public class Foo {
public static function bar():void {trace('Foo.bar() was called.');}
}
}
To działa po prostu doskonale. Problem podczas skomentować tę (9.) wiersz:
// new Foo();
Bez tej linii to wychodzi z wyjątkiem:
ReferenceError: Error #1065: Variable Foo is not defined.
Jak mogłem to zrobić bez tej instancji? Jeśli to niemożliwe, czy istnieje sposób na utworzenie klasy z zmiennej łańcuchowej? Lub, jeśli nadal jest to zła praktyka, jak byś to zrobił? (Muszę pracować z tymi dwoma nieznanymi zmiennymi łańcuchowymi.)
Z góry dziękuję.
Jest to również powszechny problem podczas korzystania z iniekcji zależności w as3. W przypadku innych opcji sprawdź http://www.springactionscript.org/docs/reference/html/Class-inclusion.html (uwaga: witryna jest wyłączona, ale powinna wrócić). –
Wielkie dzięki za link;) Witryna ponownie się uruchamia. – itarato