Как применить состояния изображения в выпадающем списке spark

#apache-flex #actionscript-3 #drop-down-menu #skins

#apache-flex #actionscript-3 #выпадающее меню #Скины

Вопрос:

У меня есть выпадающий список spark, и я применил к нему пользовательский скин для отображения в нем изображений вместо меток.

 <s:DropDownList id="id_cbLineType" 
                skinClass="assets.skins.SkinDropDownImageList"
                itemRenderer="spark.skins.spark.DefaultComplexItemRenderer"
                width="32"
                selectedIndex="0"
                borderAlpha="1"
                change="OnLineTypeChange(event)">
    <s:dataProvider>
        <s:ArrayList>
            <mx:Image source="@Embed('assets/images/mainToolbars/Straight.png')" />
            <mx:Image source="@Embed('assets/images/mainToolbars/Curved.png')" />
            <mx:Image source="@Embed('assets/images/mainToolbars/Angular.png')" />
        </s:ArrayList>
    </s:dataProvider>
</s:DropDownList>
  

Я применил пользовательский скин для отображения изображений. Теперь я хочу показывать разные изображения для up, over, down и отключать состояния для этих изображений.
Есть ли какой-либо способ сделать это?

Ответ №1:

Вам нужно создать пользовательский инструмент визуализации элементов с этими состояниями и отобразить изображения. Вам не нужно было бы использовать изображения в поставщике данных, сами данные изображения, средство визуализации элементов сделает все остальное.

Ответ №2:

Вы должны быть в состоянии реализовать состояния up / over / down / disabled в вашем ItemRenderer. Вам нужно будет передать все изображения, поэтому вам, вероятно, придется изменить свой dataProvider. Я бы создал его в ActionScript вместо MXML. Я бы также использовал объект вместо изображения. Вы можете создать свой собственный пользовательский объект.

Но концептуально что-то вроде этого:

 public var dp : ArrayCollection = new ArrayCollection([
 {upImage='assets/images/mainToolbars/Straight.png',downImage=,'assets/images/mainToolbars/Straight.png',disabledImage='assets/images/mainToolbars/Straight.png',overImage='assets/images/mainToolbars/Straight.png'},
]);
  

Они будут переданы в ваш ItemRenderer в качестве свойства data, а затем вы сможете использовать их для оформления вашего ItemRenderer.

Поскольку вы встраиваете изображения, а не просто ссылаетесь на них; вам придется сделать немного больше, чем строки, которые я использую в приведенном выше примере.