2009 年 08 月 30 日 00:57:22 (L4CD.NET) / /
Flash的List组件不像Flex有alternatingItemColors可以直接设置隔行颜色...
如果需要达到这样的效果..
我们可以对CellRenderer进行自定义..以达到相应的效果..
package
{
import fl.controls.listClasses.CellRenderer;
import fl.controls.listClasses.ICellRenderer;
import fl.controls.listClasses.ListData;
import flash.display.Shape;
public class MyCellRenderer extends CellRenderer implements ICellRenderer
{
private var m:Shape = new Shape();
public function MyCellRenderer()
{
addChildAt(m,0);
}
override public function set listData(value:ListData):void
{
super.listData = value;
m.graphics.beginFill(0xeeeeee,value.index%2);
m.graphics.drawRect(1,1,width-2,height-2);
m.graphics.endFill();
}
}
}
查看文章剩余部份
2008 年 12 月 14 日 11:39:02 (L4CD.NET) / /
在FLASH中我们可以使用setStyle来设置组件的样式..
可对于像List/ComboBox/DataGrid这类数据显示类的组件...
使用setStyle("textFormat",textFormat)并不会设置其中的数据区域的文本样式..
那是因为这类组件..显示数据部份为CellRenderer..
而对组件setStyle并不会影响到CellRenderer..
我们应当调用setRendererStyle方法来另外对CellRenderer进行设置
ComboBox.setRendererStyle("textFormat",new TextFormat("宋体",14,0xFF6600));
另外..如果想像Flex那样达到全局样式设置的效果..
可以使用StyleManager类..该类在fl.managers中..
只要使用
import fl.managers.StyleManager;
StyleManager.setStyle("textFormat",new TextFormat("宋体",12,0x000000));
2008 年 11 月 11 日 00:18:57 (L4CD.NET) / /
今天我们将通过继承List组件并重写drawRowBackground函数的方式自定义List的样式..
让List的每个项目以虚线隔开~~
override protected function drawRowBackground(s:Sprite,rowIndex:int,y:Number,height:Number,color:uint,dataIndex:int):void
{
super.drawRowBackground(s,rowIndex,y,height,color,dataIndex);
var bg:Shape = Shape(s.getChildAt(rowIndex));
//此外为了显示虚线~使用一个while来循环来模拟虚线效果~
var p:Number = 0;
bg.graphics.lineStyle(1,0xCCCCCC);
while(p < listContent.width)
{
bg.graphics.moveTo(p,height-1);
bg.graphics.lineTo(p+4,height-1);
p += 6;
}
}
需要注意的一点~
<L4cd:iList alternatingItemColors="0xFFFFFF" rowHeight="25" dataProvider="{list}" labelField="label" left="10" top="10" right="10" bottom="10"/>
要触发drawRowBackground函数~必须先设置
alternatingItemColors这个style~因为
drawRowBackground的作用是用来画item的背景的,没有设置背景将不会触发
drawRowBackground~
相关文件 (1.4 KiB, 252 hits)