如何在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
答案 0 :(得分:2)
在您的设置数据中,如果未访问该样式,则需要将样式设置回原始样式,否则当渲染器被回收到未访问的节点时,它将保留访问的颜色。
...试
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也是一项昂贵的操作),但它会起作用。