Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flex Flex树访问指示器_Apache Flex_Actionscript 3_Tree_E4x - Fatal编程技术网

Apache flex Flex树访问指示器

Apache flex Flex树访问指示器,apache-flex,actionscript-3,tree,e4x,Apache Flex,Actionscript 3,Tree,E4x,如何在flex树组件上指示访问历史?我希望将单击/访问的节点高亮显示为不同的颜色,并且此后不会更改,以便所有访问的节点都是一种颜色 我尝试通过以下方式向底层XML添加属性: var selected:XML=app.treeObj.selectedItem as XML; if(!selected.hasOwnProperty("visited")) { selected.@visited = "true"; } 并为树创建一个itemrenderer,如下所示 public cla

如何在flex树组件上指示访问历史?我希望将单击/访问的节点高亮显示为不同的颜色,并且此后不会更改,以便所有访问的节点都是一种颜色

我尝试通过以下方式向底层XML添加属性:

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

}
并为树创建一个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(value.@visited=="true")
                {
                    setStyle("color", 0x000000);
                }

                invalidateDisplayList()

            }
        }

    }
此代码确实保留了新的颜色,但它也更改了根本未访问的节点的颜色。我做错了什么?有没有更好的方法来实现这一点


Vipin

在设置的数据中,如果未访问样式,则需要将其设置回原始样式,否则当渲染器循环到未访问的节点时,它将保留已访问的颜色

试试看

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

                    super.data = value;
                    if(value.@visited=="true")
                    {
                            setStyle("color", 0x000000);
                    } 
                    else 
                    {
                            setStyle("color", originalColor);
                    }

                    invalidateDisplayList()

            }
    }

这不是最有效的方法(即使不需要也要设置颜色,而且setStyle是一个昂贵的操作),但它会起作用。

只是澄清一下:您是否调用
selected。@visted=“true”从树的选择处理程序,或者甚至在将其分配给树的
数据提供程序之前?我在itemClickHandler上的selectedItem上调用它。谢谢Gregor。我离它太近了。。谢谢你及时的回复。。现在它可以工作了。再次感谢。