#apache-flex #flex4 #stylesheet
#apache-flex #flex4 #таблица стилей
Вопрос:
Это работает:
<mx:Image styleName="image" source="done.png">
</mx:Image>
Это не:
<fx:Style>
@namespace mx "library://ns.adobe.com/flex/mx";
@namespace s "library://ns.adobe.com/flex/spark";
.image {
source : url("done.png")
}
</fx:Style>
<mx:Image styleName="image" >
</mx:Image>
Сводит меня с ума. Как это должно быть сделано?
Те же результаты, если я сделаю:
.image {
source : "done.png"
}
Полный исходный код — это:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:s="library://ns.adobe.com/flex/spark"
minWidth="636" minHeight="389" width="636" height="389"
>
<fx:Style>
@namespace mx "library://ns.adobe.com/flex/mx";
@namespace s "library://ns.adobe.com/flex/spark";
.image {
source : "done.png"
}
</fx:Style>
<mx:Image styleName="image" >
</mx:Image>
</s:Application>
Ответ №1:
mx:Image
s source
— это не стиль, а свойство. Это невозможно установить с помощью CSS напрямую. Попробуйте использовать что-то вроде:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:s="library://ns.adobe.com/flex/spark"
minWidth="636" minHeight="389" width="636" height="389"
>
<fx:Style>
@namespace mx "library://ns.adobe.com/flex/mx";
@namespace s "library://ns.adobe.com/flex/spark";
s|Application {
image-source: Embed(source="done.png");
}
</fx:Style>
<mx:Image source="{getStyle('imageSource')}" >
</mx:Image>
</s:Application>
Комментарии:
1. Вы правы, однако вы также могли бы сделать:
<mx:Image id="image" source="{image.getStyle('source')}" />
🙂2. Да, это то же самое. Но что касается меня, я стараюсь избегать ссылок на себя
id
в MXML.3. В любом случае лучшим решением является извлечение компонента с изображениями в отдельный компонент и объявление стилей там.
4. облом. Я рассчитываю на возможность изменять стили во время выполнения с помощью StyleManager.