| jaa_breath |
19.06.2011 16:02 |
flex4 List ItemRenderer
имеется свой ItemRenderer для List,
Код AS3:
<s:ItemRenderer name="PageListItemRenderer" height="30" height.showMenu="50" width="153"
color.hovered="black" color.normal="white"
xmlns="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
autoDrawBackground="false">
...
private function hideShowMenu():void {
if (currentState == "selected") {
currentState = "showMenu";
}
}
<s:states>
<s:State name="normal"/>
<s:State name="hovered"/>
<s:State name="selected"/>
<s:State name="showMenu"/>
</s:states>
основое состояние
<s:HGroup width="120" paddingTop="6" excludeFrom="showMenu">
<s:BitmapImage source="@Embed('/skin/ico/page.png')"
verticalCenter="0"/>
<s:Label text="{data.name}" paddingTop="4"
width="100%"
maxDisplayedLines="1"
showTruncationTip="true"/>
</s:HGroup>
<s:Button click="hideShowMenu()" skinClass="skin.ArrowButtonSkin" left="130" top="12" buttonMode="true"
icon.normal="@Embed('/skin/ico/arrow.png')"
icon="@Embed('/skin/ico/arrow_active.png')"/>
при нажатии на button, item переходит в состояние showMenu,
то есть на месте item`a появляется меню.
Код AS3:
<s:VGroup id="showMenu" includeIn="showMenu" paddingTop="10" paddingLeft="10" fontSize="10" gap="6">
<s:Label text="Дублировать" buttonMode="true" click="duplicatePage(event)"/>
<s:Label text="Переименовать" buttonMode="true" click="Alert.show('d')"/>
<s:Label text="Удалить" buttonMode="true"/>
</s:VGroup>
при нажатии на любой Label(пункт) в этом меню, общее состояние Item`a просто переходит в normal, меню закрывается, но при этом клик не обрабатывается. если ловить событие mouseOver на лабелах то все ок.
но нужно поймать клик..
спасибо
|