2009-10-26 1 views
0

플렉스 트리 구성 요소의 방문 기록을 어떻게 표시합니까? 클릭/방문한 노드를 다른 색으로 강조 표시하고 그 후에 변경하지 않으므로 모든 방문 노드가 하나의 색이됩니다. 플렉스 트리 방문 표시기

나는

var selected:XML=app.treeObj.selectedItem as XML; 
if(!selected.hasOwnProperty("visited")) 
{ 
    [email protected] = "true"; 

} 

하여 기본 XML에 속성을 추가하는 시도하고 아래 나무에 대한의 itemRenderer 있습니다.

public class CustomTreeItemRenderer extends TreeItemRenderer 
    { 
     public function CustomTreeItemRenderer() 
     { 
      super(); 
     } 

     override public function set data(value:Object):void 
     { 
      if(value !=null) 
      { 

       super.data = value; 
       if([email protected]=="true") 
       { 
        setStyle("color", 0x000000); 
       } 

       invalidateDisplayList() 

      } 
     } 

    } 

이 코드는 새 색상을 유지하지만 방문하지 않은 노드의 색상도 변경합니다. 여기서 내가 뭘 잘못하고 있니? 이것을 달성하기위한 더 좋은 방법이 있습니까? 당신의 설정 데이터에서 비핀

+0

명확히하기 위해 : 트리의 select-handler에서'selected. @ visited = "true";'를 호출하고 있습니까, 아니면 트리의'dataProvider'에 할당하기 전에 있습니까? – Amarghosh

+0

itemClickHandler의 selectedItem에서 호출 중입니다. – Vipin

답변

2

, 당신은 렌더러가 방문하지 않은 노드로 재활용하는 경우 그렇지 않은 경우는 방문 색을 유지, 다시 방문하고 있지 않은 경우 원래의 스타일을 설정해야합니다. 시도

...

override public function set data(value:Object):void 
    { 
      if(value !=null) 
      { 

        super.data = value; 
        if([email protected]=="true") 
        { 
          setStyle("color", 0x000000); 
        } 
        else 
        { 
          setStyle("color", originalColor); 
        } 

        invalidateDisplayList() 

      } 
    } 

그것을 그 일을 가장 효율적인 방법 (당신은 당신이 필요하지 않으며,의 setStyle는 비용이 많이 드는 작업 인 경우에도 색상을 설정 할 수 있습니다)하지만,하지 일할거야.

+0

감사합니다. Gregor .. 저는 그것에 매우 가깝습니다. 적시에 응답 해 주셔서 감사 드리며, 이제 작동합니다. 다시 한번 감사드립니다. – Vipin