我以前做过这个,但我不记得语法。
我得到了什么(简化):
function createText(clazz:Class)
{
var font:Font = new clazz(); //throws Instantiation attempted on a non-constructor.
}
我相信这可以在不使用getQualifiedClassName的情况下完成,但已经很长时间了。任何帮助表示赞赏。
答案 0 :(得分:7)
您可能正在将null传递给函数。
package
{
import flash.display.Sprite;
public class ClassTest extends Sprite
{
function ClassTest()
{
makeObject(Object);
makeObject(Sprite);
makeObject(null);
}
private function makeObject(type:Class):void
{
trace(typeof type);
var obj:* = new type();
trace(typeof obj);
trace("");
}
}
}
输出:
object
object
object
object
object
TypeError: Error #1007: Instantiation attempted on a non-constructor.
at ClassTest/makeObject()
at ClassTest()
答案 1 :(得分:1)
你如何将类传递给函数? 如果想要的类不可用,调用行应该首先输入错误,这很奇怪。
你可以发布真实的代码吗?
这里有一个加载外部swf编译的类的技巧
var clazz:Class = this.yourLoader.contentLoaderInfo.applicationDomain.getDefinition("yourClassName") as Class;
答案 2 :(得分:0)
原来我没有在CS3中给字体命名。所以,是的,我正在传递null。