Как установить источник изображения в таблице стилей Flex (не встраивать)

#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.