PDA

Просмотр полной версии : Вытащить классы из swc


in4core
15.09.2013, 23:28
А, что оказывается не придумали средства вытащить динамически классы из swc не прибегая к явному определению?
Аля c:Class = getDefinitionByName("class1")
mc = new c() as Moiveclip;
Что то я не нагуглил такого, а пришлось сталкнуться с такой задачей впервые.

alexandrratush
16.09.2013, 00:28
Вот такое решение подойдет?

private function getClassByName(class_name: String):MovieClip //в качестве параметра указываем имя класса из СВЦ
{
var ClassRef:Class = getDefinitionByName(class_name) as Class; //Создаём нужный нам класс
var mc:MovieClip = (new ClassRef() as MovieClip); //Создаём экземпляр нашего класса
return mc;
}

in4core
16.09.2013, 00:32
Нет не подойдет. потому, что классы все равно придется вкомпиливать вручную, то есть
Class1;
Class2;
и т.д.
Вопрос стоит о 100-200 аналогичных классов, но с разной графикой.

C4Grey
16.09.2013, 00:40
На этапе компиляции в бинарник подтягиваются только нужные классы из swc. В FlashDevelop для того, чтобы включить библиотеку в проект полностью, нужно в её опциях выбрать тип Included library, в других IDE, очевидно, нечто похожее. Еще есть костыль - можно создать в библиотеке нечто вроде списка импортируемых типов(просто класс с неинциализированными переменными нужных типов), подключить этот класс в основной проект и тогда уже использовать getDefinitionByName для любого из этих типов.

in4core
16.09.2013, 01:36
Про костыль это я конечно же догадался и сам, и вообщем то так и сделал, а что касается опций в FD, это где? Не делал так никогда раньше просто.

Добавлено через 58 секунд
Все нашел, спасибо!