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是一项昂贵的操作),但是它可以工作。