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

时间:2009-07-31 07:40:23

标签: actionscript-3

我以前做过这个,但我不记得语法。

我得到了什么(简化):

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

我相信这可以在不使用getQualifiedClassName的情况下完成,但已经很长时间了。任何帮助表示赞赏。

3 个答案:

答案 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。