2012-02-11 1 views
0

У меня есть приложение с загрузчиком SWF.
Из загруженного SWF-файла, я доступа к общественным переменным из основного приложения с этим:Как использовать скин из основного приложения в Flex?

[Bindable] public var global:Object = FlexGlobals.topLevelApplication; 

Alert.show(global.myvar); 

Это все работает отлично.

У меня есть файл скина MXML (для кнопок) в каталоге под названием «скины» в главном приложении.
Можно ли использовать этот скин в дочерних приложениях?


Я уже пробовал это, к сожалению, не работает:

[Bindable] public var global:Object = FlexGlobals.topLevelApplication; 

<s:Button label="My Text" skinClass="{global.skins.menuButtons}" /> 

И это, но тогда он не может составить больше:

[Bindable] public var global:Object = FlexGlobals.topLevelApplication; 

<s:Button label="Button 1" skinClass="global.skins.menuButtons" /> 
<s:Button label="Button 2" skinClass="FlexGlobals.topLevelApplication.skins.menuButtons" /> 

Можно что я хочу по-другому или мне нужно скопировать скин ко всем проектам, где я хочу использовать скин?

Спасибо.

+1

Один из вариантов может состоять в том, чтобы сделать swc, имеющим все классы скинов, и отметить, что swc загружается как rsl. Таким образом, вы будете иметь skin.swc, main_app.swf и child_app.swf. Поскольку swc является rsl, он не добавит веса любого из swf, и компилятор тоже будет счастлив. В противном случае вы можете получить экземпляр класса скинов из mainApp с помощью getDefinitionByName и использовать этот класс для создания экземпляра скина. Конечно, в этом случае у вас не будет проверки времени компиляции. – catholicon

ответ

0

Я уже исправил проблему.

В моей основной SWF-файла, я определяю публичную переменную класса:

public var menuButtons:Class = skins.menuButtons; 

И в детей SWF файлы, я имею в виду эту переменную с FlexGlobals.topLevelApplication:

[Bindable] public var global:Object = FlexGlobals.topLevelApplication; 

<s:Button label="My Text" skinClass="{global.menuButtons}" /> 

Видимо, нельзя обращаться непосредственно к коже с помощью global.skins.menuButtons.