浏览 3402 次
锁定老帖子 主题:动态修改Tree的icon图标
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-06-02
<mx:Tree id="nodesTree" width="100%" height="100%" showRoot="false" labelField="@label" itemRenderer="common.IconTreeRenderer" /> <root label="A"> <node label="模型" icon="a.png" > </root> ICON Tree渲染器 读取XML里配置的icon图标路径,然后加载到树上面,隐藏树本身的ICON图标。 package common { import flash.xml.*; import mx.collections.*; import mx.controls.Alert; import mx.controls.Image; import mx.controls.listClasses.*; import mx.controls.treeClasses.*; /* * ICON Tree的渲染器 */ public class IconTreeRenderer extends TreeItemRenderer { protected var myImage:Image; private var imageWidth:Number = 16; private var imageHeight:Number = 16; private static var defaultImg:String = "leaf.png"; public function IconTreeRenderer () { super(); } override protected function createChildren():void { super.createChildren(); myImage = new Image(); myImage.source = defaultImg; myImage.width=imageWidth; myImage.height=imageHeight; myImage.setStyle( "verticalAlign", "middle" ); addChild(myImage); } //通过覆盖data方法来动态设置tree的节点图标 override public function set data(value:Object):void { super.data = value; var imageSource:String=value.@icon; if(imageSource!="") { myImage.source=imageSource; }else{ myImage.source=defaultImg; } } //隐藏原有图标,并设置它的坐标 override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void { super.updateDisplayList(unscaledWidth, unscaledHeight); if(super.data !=null) { if (super.icon != null) { myImage.x = super.icon.x; myImage.y = 2; super.icon.visible=false; } else { myImage.x = super.label.x; myImage.y = 2; super.label.x = myImage.x + myImage.width + 17; } } } } } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |