#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.
Поскольку вы встраиваете изображения, а не просто ссылаетесь на них; вам придется сделать немного больше, чем строки, которые я использую в приведенном выше примере.