Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   Как заставить компилятор внедрить класс? (http://www.flasher.ru/forum/showthread.php?t=128968)

SorrowN00b 21.08.2009 15:02

Как заставить компилятор внедрить класс?
 
Делаю фабрику классов

Код AS3:

import view.views.*;
 
var classReference:Class = getDefinitionByName("MyClass") as Class;
var instance:Canvas = new ClassReference() as Canvas;
addChild(instance);

Класс MyClass не находится. Нужно принудить компилятор "влинкить" класс в фабрику, например

Код AS3:

import view.views.*;
 
public var dummy1:MyClass1;
public var dummy2:MyClass2;
public var dummy3:MyClass3;
 
var classReference:Class = getDefinitionByName("MyClass") as Class;
var instance:Canvas = new ClassReference() as Canvas;
addChild(instance);

Тогда все работает.
Нет ли "цивилизованного" способа заставить компилятор поместить классы в фабрику, какого-нибудь правильного мета-тега.

wvxvw 21.08.2009 15:22

скомпилировать их всех в SWC и прилинковать библиотеку включив ее всю. Только так...

SorrowN00b 21.08.2009 15:33

Мда, это перебор. Они ж у меня флексовые.
Значит, будем так...

etc 21.08.2009 15:47

Переменные можно не создавать, достаточно просто имен классов.

SorrowN00b 21.08.2009 15:52

etc а в каком контексте их можно указать? Ни в каком, просто как операция, не имеющая результата?


Код AS3:

MyClass1; MyClass2; MyClass3;

Мда, работает. Опять шаманство...

DarkLight 21.08.2009 17:33

Цитата:

includes class [...]
Links one or more classes to the resulting application SWF file, whether or not those classes are required at compile time.
А это разве не работает?

SorrowN00b 21.08.2009 18:29

Может и работает, но это уже чересчур ;)
После добавления каждой вьюшки менять параметры компиляции...

etc 21.08.2009 18:31

wvxvw, в swc может быть двести классов, а в проекте явно используется только 10. В конечном приложении, использующем этот swc будут содержаться только те классы, которые реально были использованы.

wvxvw 22.08.2009 01:18

Цитата:

Сообщение от etc (Сообщение 844563)
wvxvw, в swc может быть двести классов, а в проекте явно используется только 10. В конечном приложении, использующем этот swc будут содержаться только те классы, которые реально были использованы.

Смотря как подключишь, если
Цитата:

-compiler.include-libraries [library] [...]
alias -include-libraries
a list of libraries (SWCs) to completely include in the SWF
(repeatable)
То включится все, что было в SWC за исключением того, что было описано в <files/> :)

etc 22.08.2009 11:41

Не знаю, надо проверять, помнится, когда билдил ant-ом, этот include-libraries вшивал только используемое. Более того, неясно, в каком порядке он будет инициализировать неиспользуемые классы, а это очень важно. Если вшивать вперед нужного кода, то грош ему цена.


Часовой пояс GMT +4, время: 23:18.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.