2011-05-13 6 views
0

저는 현재 새로운 Flex 4.5 (및 flashbuilder 4.5)를 사용하고 있습니다. 나는 모든 매개 변수와 표준을 표시하는 목록을 가지고 있습니다 (처음 응용 프로그램을 시작할 때) 그들은 회색 V를 데코레이터로 사용합니다.아이템 렌더러가 장식자를 설정하지 않았습니다.

Flex Hero에서 개발할 때 항목을 클릭하면 회색 V가 녹색으로 바뀌 었습니다.

이제 Flex 4.5에서 동일한 코드가 작동하지 않습니다.

이상한 점은 이전의보기로 이동 한 다음 매개 변수로 내 목록으로 돌아갈 때 클릭 한 사람들을 변경한다는 것입니다. 또한 setStyle을 사용하고 클릭하면이 색상이 빨간색으로 바뀌고 작동하지만 데코레이터를 변경하면 색상이 변경되지 않습니다.

<?xml version="1.0" encoding="utf-8"?> 
<s:IconItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
       xmlns:s="library://ns.adobe.com/flex/spark" iconWidth="64" iconHeight="64" 
       labelFunction="itemLabelFunction"> 
<fx:Script> 
    <![CDATA[ 

     [Embed(source="checked.png")] 
     public var checked:Class; 

     [Embed(source="unchecked.png")] 
     public var unchecked:Class; 

     override public function set data(value:Object):void 
     { 
      super.data = value; 
      if(value != null) 
      { 
       if(value.selected) 
       { 
        decorator = checked; 
        setStyle("color", "red"); 
       } 
       else 
       { 
        decorator = unchecked; 
        setStyle("color", "black"); 
       } 
      } 
     } 



     private function itemLabelFunction(item:Object):String 
     { 
      return item.name; 
     } 
    ]]> 
</fx:Script> 

: 내 itemRenderer를 여기

package views 
{ 
public class SelectableItem 
{ 
    private var m_name:String; 
    private var m_selected:Boolean; 

    public function SelectableItem(name:String,selected:Boolean = false) 
    { 
     m_name = name; 
     m_selected = selected; 
    } 

    public function get name():String 
    { 
     return m_name; 
    } 

    public function set name(value:String):void 
    { 
     m_name = value; 
    } 
    [Bindable] 
    public function get selected():Boolean 
    { 
     return m_selected; 
    } 

    public function set selected(value:Boolean):void 
    { 
     m_selected = value; 
    } 

    public function toggleSelection():void 
    { 
     selected = !selected; 
    } 

} 
} 

그리고 : 여기

<fx:Script> 
    <![CDATA[ 
     import mx.collections.ArrayCollection; 

     [Bindable] 
     private var m_list:ArrayCollection = new ArrayCollection(); 

     private function init():void 
     { 
       for(var i:int = 0 ; i<5 ; i++) 
       { 
        var test:SelectableItem = new SelectableItem("Item"+i); 
        m_list.addItem(test); 
       } 
     } 

     protected function list1_clickHandler(event:MouseEvent):void 
     { 
      SelectableItem(m_list.getItemAt(listID.selectedIndex)).toggleSelection();      
     } 

    ]]> 
</fx:Script> 

<s:List id="listID" 
     x="0" y="99" width="480" height="596" 
     dataProvider="{m_list}" 
     itemRenderer="views.ListItemRenderer" 
     click="list1_clickHandler(event)"/> 

</s:View> 

당신이 클래스를 볼 수 있습니다

나는 보여주기 위해 작은 예제를 만들어

누군가 해결책을 알고 있습니까? 제게 많은 도움이 될까요?

미리 감사드립니다.

종류와 관련,

티보 헤일 렌

답변

관련 문제