передать класс в качестве параметра, а затем создать экземпляр класса - PullRequest
3 голосов
/ 31 июля 2009

Я делал это раньше, но не могу вспомнить синтаксис.

Что у меня есть (упрощенно):

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

Я считаю, что это можно сделать без использования getQualifiedClassName, но это было давно. Любая помощь приветствуется.

Ответы [ 3 ]

7 голосов
/ 03 августа 2009

Возможно, вы передаете 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 голос
/ 31 июля 2009

как вы передаете класс в функцию? вызывающая линия должна была выдать ошибку, если искомый класс не был доступен, это странно.

вы можете разместить реальный код?

здесь трюк для загрузки класса, скомпилированного во внешнем SWF

var clazz:Class = this.yourLoader.contentLoaderInfo.applicationDomain.getDefinition("yourClassName") as Class;
0 голосов
/ 05 августа 2009

Оказывается, я не дал шрифту имя класса в CS3. Так что да, я обнулял.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...