Создание экземпляра класса из строки в ActionScript 3 - PullRequest
4 голосов
/ 04 августа 2011

У меня есть строка, которая во время выполнения содержит имя класса, который я хочу создать. Как бы я это сделал?

Я прочитал предложения по использованию flash.utils.getDefinitionByName():

var myClass:Class = getDefinitionByName("package.className") as Class;
var myInstance:* = new myClass();

Однако, это дает мне следующую ошибку:

Исключение [Fault], информация = ReferenceError: Ошибка # 1065: переменная className не определена.

Ответы [ 2 ]

6 голосов
/ 04 августа 2011

Самый простой метод, который я придумал, это просто написать имена классов, разделенные точкой с запятой, в любом месте вашего проекта.

например. Я создаю файл Assets.as со следующим:

package {   

public class Assets {       

    // To avoid errors from the compiler when calling getDefinitionByName
    // just list all of the classes that are not otherwise referenced in code:
    Balloon;
    Cloud;
    FlyingHorse;
    FlyingPig;
    UFO;
    Zeppelin;       
}
}

Полный пример кода / учебник по этому здесь: http://producerism.com/blog/flashpunk-dame-and-lua-tutorial-part-6/

1 голос
/ 30 октября 2014

Другой вариант - использовать аргумент компилятора mxmlc -include, например:

-includes=com.mydomain.package.MyClass

http://blogs.adobe.com/cantrell/archives/2010/09/loading-classes-dynamically-in-actionscript-3.html

...