按条件显示Flash中的List组件各行样式

 Flash的List组件不像Flex有alternatingItemColors可以直接设置隔行颜色...如果需要达到这样的效果..我们可以对CellRenderer进行自定义..以达到相应的效果..

01.package  
02.{  
03.    import fl.controls.listClasses.CellRenderer;  
04.    import fl.controls.listClasses.ICellRenderer;  
05.    import fl.controls.listClasses.ListData;  
06.    import flash.display.Shape;  
07.    public class MyCellRenderer extends CellRenderer implements ICellRenderer  
08.    {  
09.        private var m:Shape = new Shape();  
10.        public function MyCellRenderer()  
11.        {  
12.            addChildAt(m,0);  
13.        }  
14.        override public function set listData(value:ListData):void 
15.        {  
16.            super.listData = value;  
17.            m.graphics.beginFill(0xeeeeee,value.index%2);  
18.            m.graphics.drawRect(1,1,width-2,height-2);  
19.            m.graphics.endFill();  
20.        }  
21.    }  
22.}
上面的自定义MyCellRenderer类中..重写了set listData的方法..listData即为该CellRenderer的数据源...当中有一个index的属性..我们可以根据这个属性来在达到隔行显示的效果...使用上面的CellRenderer

另外.我们还可以针对数据值进行处理...以以下数据源为例

1.var dataArr:Array = [  
2.{id:1,label:"L4cd.Net",count:999},    
3.{id:2,label:"中国",count:100},    
4.{id:3,label:"英国",count:90},    
5.{id:2,label:"美国",count:80},    
6.{id:3,label:"德国",count:70},    
7.{id:2,label:"日本",count:60}]
我们希望count少于90的文本显示为红色,可以重写set data函数..

01.package  
02.{  
03.    import fl.controls.listClasses.CellRenderer;  
04.    import fl.controls.listClasses.ICellRenderer;  
05.    import flash.text.TextFormat;  
06.    public class MyCellRenderer extends CellRenderer implements ICellRenderer  
07.    {  
08.        override public function set data(value:Object):void 
09.        {  
10.            super.data = value; 

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

Grow your business fast with

Suku