2013-08-23 1 views
0

플렉스 4.10 및 스파크 목록 IconItemRenderer -IconItemRenderer : 일부 목록 항목에만 데코레이터를 표시하는 방법?

일부 목록 항목에만 데코레이터 이미지를 표시 할 수 있습니까?

나는 선수의 주간 최고 등급을 나타내는 목록이 유일한 수상자에 대한 메달을 표시하는 방법을 궁금해 :

짧은 대답에서 null로 장식을 설정하는 것입니다 enter image description here

<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

귀하의 데이터 변경 기능.

긴 대답 :

<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> 

는 내 모바일 게임에서이 같은 방법을 사용합니다.

+1

감사합니다. 나는'set data' 메쏘드에서 같은 코드를 시도해 보았습니다. 또한이 코드를위한 더 나은 곳은 어디인가 궁금합니다. –

+1

나는 언제나 dataChange 이벤트에서 핸들러를 사용하는 것을 선호한다. 그러나 나는 그것이 더 낫다는 주장이 없다. dataChange를 사용하거나 데이터를 설정하는 것은 실제로 문제가되지 않습니다. "Component LifeCycle specific"을 얻으려면 세트 데이터가 invalidateDisplayList()를 호출해야하며 UI 변경은 updateDisplayList 함수에서 수행되어야합니다. 아마도 당신이 확장 성/재사용 가능한 구성 요소에 집중하고있는 것이 아니라면 과도한 것입니다. – JeffryHouser

관련 문제