Как я могу создать экземпляр класса из SWF? - PullRequest
3 голосов
/ 22 января 2009

У меня есть FLA-файл с объектами в библиотеке, которые я установил как «классы» (В CS3, щелкните правой кнопкой мыши по элементу в свойствах выбора библиотеки, убедитесь, что он настроен на экспорт для action-script и имеет имя класса)

Для этого упражнения давайте назовем класс «MyClass»

Если я опубликую этот FLA в SWC и SWF:

Я могу загрузить SWC статически и создать экземпляр «MyClass», просто выполнив:

var inst:MyClass = new MyClasS();

Теперь проблема: я хотел бы иметь возможность сделать это во время выполнения, загрузив SWF-файл с помощью объекта загрузчика.

Я понимаю, как получить доступ к экземплярам, ​​которые были созданы вручную в FLA перед публикацией, но я хочу иметь возможность создавать новые экземпляры класса "MyClass".

Я могу получить «MovieClip», представляющий файл SWF, я могу добавить его в свой список отображения, но я не могу получить доступ к содержащимся в нем классам. (Надеюсь это имеет смысл)

Любые предложения о том, как атаковать это, будут высоко оценены.

Редактировать: Код формата

Ответы [ 2 ]

3 голосов
/ 22 января 2009

Чтобы завершить ответ Кристиана:

var cls : Class = loader.contentLoaderInfo.applicationDomain.getDefinition("ClassName");

var instance : Object = new cls();

Кроме того, стоит отметить, что вы не получите строгой типизации (т. Е. Она должна быть объявлена ​​как Object), если класс не реализует интерфейс, который также определен в вашем основном приложении. После этого вы сможете объявить переменную экземпляра как интерфейс и получить доступ во время компиляции к ее членам.

2 голосов
/ 22 января 2009

Взгляните сюда ; Вы должны иметь возможность извлечь ссылку на класс с помощью Loader.contentLoaderInfo.applicationDomain.getDefinition ("MyClass").

...