使用 ActionScript 3.0 组件 |
|
|
|
| 使用组件 > 使用 CellRenderer > 定义自定义 CellRenderer 类 | |||
例如,下面的代码中包括两个类。ListSample 类用于实例化 List 组件,并且该类使用另一个类 CustomRenderer 来定义用于此 List 组件的单元格渲染器。CustomRenderer 类扩展了 CellRenderer 类。
使用扩展 CellRenderer 类的类来定义自定义 CellRenderer:
myList.setStyle("cellRenderer", CustomCellRenderer);
myList.addItem({label:"Burger -- $5.95"});
myList.addItem({label:"Fries -- $1.95"});
package {
import fl.controls.listClasses.CellRenderer;
import flash.text.TextFormat;
import flash.filters.BevelFilter;
public class CustomCellRenderer2 extends CellRenderer {
public function CustomCellRenderer2() {
var format:TextFormat = new TextFormat("Verdana", 12);
setStyle("textFormat", format);
this.filters = [new BevelFilter()];
}
}
}
还可以使用继承 DisplayObject 类并实现 ICellRenderer 接口的任何类来定义 CellRenderer。例如,下面的代码定义了两个类。ListSample2 类将 List 对象添加到显示列表中,并将其 CellRenderer 定义为使用 CustomRenderer 类。CustomRenderer 类扩展了 CheckBox 类(CheckBox 类扩展了 DisplayObject 类)并实现了 ICellRenderer 接口。请注意,CustomRenderer 类为 ICellRenderer 接口中定义的 data 和 listData 属性定义了 getter 和 setter 方法。ICellRenderer 接口中定义的其它属性和方法(selected 属性和 setSize() 方法)已在 CheckBox 类中定义:
使用实现 ICellRenderer 接口的类来定义自定义 CellRenderer:
myList.setStyle("cellRenderer", CustomCellRenderer);
myList.addItem({name:"Burger", price:"$5.95"});
myList.addItem({name:"Fries", price:"$1.95"});
package
{
import fl.controls.CheckBox;
import fl.controls.listClasses.ICellRenderer;
import fl.controls.listClasses.ListData;
public class CustomCellRenderer extends CheckBox implements ICellRenderer {
private var _listData:ListData;
private var _data:Object;
public function CustomCellRenderer() {
}
public function set data(d:Object):void {
_data = d;
label = d.label;
}
public function get data():Object {
return _data;
}
public function set listData(ld:ListData):void {
_listData = ld;
}
public function get listData():ListData {
return _listData;
}
}
}
还可以使用库中的元件定义 CellRenderer。必须为 ActionScript 导出此元件,并且此库元件的类名称必须有一个实现 ICellRenderer 接口或扩展 CellRenderer 类(或其子类之一)的关联类文件。
下面的示例使用库元件定义自定义 CellRenderer。
使用库元件定义 CellRenderer:如果 Flash 显示"ActionScript 类警告",请单击警告框中的"确定"按钮。
myList.setStyle("cellRenderer", MyCellRenderer);
package {
import flash.display.MovieClip;
import flash.filters.GlowFilter;
import flash.text.TextField;
import fl.controls.listClasses.ICellRenderer;
import fl.controls.listClasses.ListData;
import flash.utils.setInterval;
public class MyCellRenderer extends MovieClip implements ICellRenderer {
private var _listData:ListData;
private var _data:Object;
private var _selected:Boolean;
private var glowFilter:GlowFilter;
public function MyCellRenderer() {
glowFilter = new GlowFilter(0xFFFF00);
setInterval(toggleFilter, 200);
}
public function set data(d:Object):void {
_data = d;
textField.text = d.label;
}
public function get data():Object {
return _data;
}
public function set listData(ld:ListData):void {
_listData = ld;
}
public function get listData():ListData {
return _listData;
}
public function set selected(s:Boolean):void {
_selected = s;
}
public function get selected():Boolean {
return _selected;
}
public function setSize(width:Number, height:Number):void {
}
public function setStyle(style:String, value:Object):void {
}
private function toggleFilter():void {
if (textField.filters.length == 0) {
textField.filters = [glowFilter];
} else {
textField.filters = [];
}
}
}
}
|
|
|
|