2009-10-26 1 views
0

Comment indiquer l'historique des visites sur un composant arboricole flexible? Je veux mettre en évidence les nœuds cliqués/visités à une couleur différente et ne changera pas après cela, de sorte que tous les nœuds visités seront d'une couleur.Indicateurs de visite de l'arbre flexible

J'essayé d'ajouter un attribut au XML sous-jacent par

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

} 

et ont un itemRenderer pour l'arbre comme ci-dessous.

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

      } 
     } 

    } 

Ce code conserve la nouvelle couleur, mais il change également la couleur des nœuds qui ne sont pas du tout visités. Qu'est-ce que je fais mal ici? Y a-t-il un meilleur moyen d'y parvenir?

Vipin

+0

Juste pour clarifier: appelez-vous 'selected. @ Visited =" true ";' du select-handler de l'arbre ou même avant de l'assigner 'dataProvider' de l'arbre? – Amarghosh

+0

Je l'appelle sur le selectedItem sur itemClickHandler .. – Vipin

Répondre

2

Dans vos données de jeu, vous devez définir le style de retour à l'original si cela n'a pas été visité, sinon lorsque le moteur de rendu est recyclé vers un noeud unvisited, il conserve la couleur visitée.

Essayez ...

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

      } 
    } 

pas la façon la plus efficace de le faire (vous serez définir la couleur même si vous n'avez pas besoin, et setStyle est une opération coûteuse), mais travaillera.

+0

Merci Gregor..J'étais si proche de lui .. Merci pour votre réponse rapide .. et cela fonctionne maintenant. Merci encore. – Vipin