将类作为参数传递,然后从类实例化。

3

我以前做过这个,但是我记不清语法了。

我的代码(简化版):

function createText(clazz:Class)
{
    var font:Font = new clazz(); //throws Instantiation attempted on a non-constructor.
}

我相信可以不使用getQualifiedClassName来完成,但已经很久没用了。非常感谢任何帮助。

3个回答

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
你是如何将类传递给函数的? 如果所需类不可用,则调用行应首先抛出错误,这很奇怪。
你能发布真实的代码吗?
这里有一个技巧,用于加载在外部 swf 中编译的类。
var clazz:Class = this.yourLoader.contentLoaderInfo.applicationDomain.getDefinition("yourClassName") as Class;

0
原来我没有在CS3中给字体命名类名。所以是的,我传递了null值。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接