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;
发表回复