使用Flex 4.10和使用IconItemRenderer -
的spark列表是否可以仅为某些列表项显示装饰器图像?
我有一个列表代表每周最高评级的玩家,并想知道如何仅为获奖者展示奖牌:
<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>
答案 0 :(得分: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>
我在手机游戏中使用相同的方法。