У меня есть приложение с загрузчиком 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" />
Можно что я хочу по-другому или мне нужно скопировать скин ко всем проектам, где я хочу использовать скин?
Спасибо.
Один из вариантов может состоять в том, чтобы сделать swc, имеющим все классы скинов, и отметить, что swc загружается как rsl. Таким образом, вы будете иметь skin.swc, main_app.swf и child_app.swf. Поскольку swc является rsl, он не добавит веса любого из swf, и компилятор тоже будет счастлив. В противном случае вы можете получить экземпляр класса скинов из mainApp с помощью getDefinitionByName и использовать этот класс для создания экземпляра скина. Конечно, в этом случае у вас не будет проверки времени компиляции. – catholicon