【发布时间】:2010-01-11 22:55:58
【问题描述】:
我有一个丑陋的问题。我有两个字符串变量(className 和 staticMethod)存储一个类的名称,它是我必须调用的静态方法:
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) {}
}
}
}
这是主题类:
package {
public class Foo {
public static function bar():void {trace('Foo.bar() was called.');}
}
}
它工作得很好。注释掉这(第 9)行时的问题:
// new Foo();
没有这一行,它会以异常退出:
ReferenceError: Error #1065: Variable Foo is not defined.
如果没有实例化,我怎么能做到这一点?如果这是不可能的,有没有办法从字符串变量实例化类?或者,如果这仍然是一个不好的做法,你会怎么做? (我必须使用这两个未知的字符串变量。)
提前致谢。
【问题讨论】:
标签: apache-flex flash actionscript-3