关于actionscript3:Flex树访问指标

Flex Tree Visit Indicators

如何在弹性树组件上指示访问历史记录?我想将单击/访问的节点突出显示为另一种颜色,并且此后不会更改,因此所有访问的节点将是一种颜色。

我尝试通过

向基础XML添加属性

1
2
3
4
5
6
var selected:XML=app.treeObj.selectedItem as XML;
if(!selected.hasOwnProperty("visited"))
{
    selected.@visited ="true";

}

,并为树提供一个项目渲染器,如下所示。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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


在设置的数据中,如果尚未访问过样式,则需要将样式设置回原始样式,否则将渲染器回收到未访问的节点时,它会保留访问的颜色。

尝试...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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是一项昂贵的操作),但是它可以工作。