IconItemRenderer: Как отобразить декоратор только для некоторых элементов списка?
В Flex 4.10 и списке искр с помощью IconItemRenderer -
можно ли отображать изображения декоратора только для некоторых элементов списка?
У меня есть Список, представляющий еженедельный Топ-рейтинг игроков, и мне интересно, как отображать медаль только для победителей:
<fx:Declarations>
<s:MultiDPIBitmapSource id="MEDAL"
source160dpi="@Embed('assets/icons/160/medal-gold.png')"
source240dpi="@Embed('assets/icons/240/medal-gold.png')"
source320dpi="@Embed('assets/icons/320/medal-gold.png')"
source480dpi="@Embed('assets/icons/480/medal-gold.png')" />
<s:ArrayCollection id="_ac" />
</fx:Declarations>
<s:List id="_list"
width="100%"
height="100%"
dataProvider="{_ac}"
change="handleChange(event)">
<s:itemRenderer>
<fx:Component>
<s:IconItemRenderer
iconField="avatar"
messageField="city"
decorator="{outerDocument.MEDAL}"
iconFunction="{outerDocument.iconFunc}"
labelFunction="{outerDocument.labelFunc}" />
</fx:Component>
</s:itemRenderer>
</s:List>
1 ответ
Решение
Короткий ответ - установить в декораторе значение null в функции изменения данных.
Более длинный ответ:
<s:IconItemRenderer
iconField="avatar"
messageField="city"
decorator="{outerDocument.MEDAL}"
iconFunction="{outerDocument.iconFunc}"
labelFunction="{outerDocument.labelFunc}"
dataChange="onDataChange(event)" >
<fx:Script>
<![CDATA[
import mx.events.FlexEvent;
public var statManager :StatManager = StatManager.instance;
protected function onDataChange(event:FlexEvent):void
{
if(SomeConditionThatDeterminesThatDecoratorShouldBeDisplayed){
this.decorator = outerDocument.MEDAL;
} else {
this.decorator = null;
}
}
]]>
</fx:Script>
</s:IconItemRenderer>
Я использую этот же подход в моей мобильной игре.