我没有使用过 fl.controls.TileList,但它似乎使用了与 Flex 组件使用类似的策略:项目渲染器。
在这种情况下,fl.controls.TileList 的文档说:
此组件的默认单元格渲染器是 ImageCell 类。
ImageCell 单元格渲染器显示缩略图图像和
单行标签。在 TileList 中呈现基于列表的单元格
组件,请使用 CellRenderer 类。
在您的情况下,您需要指定一个类,该类将只从 dataProvider 获取 BitMapData 并使用它来显示图像。
要为渲染器使用不同的类,请使用TileList 的cellRenderer 样式。
我还没有为 Flash TileList 创建自定义单元格渲染器,但这里有一些链接可以帮助您入门:
创建自己的自定义渲染器的基本方法如下:
1.创建一个扩展 CellRenderer 的新类:
public class CustomRenderer extends CellRenderer
{
public function CustomRenderer()
{
super();
}
}
2。覆盖CellRenderer 类的data 属性的setter 方法:
TileList 组件将为dataProvider 中的每个元素创建一个渲染器。然后它在每个渲染器上调用这个 setter 方法来传递该元素的数据。在这个设置器中,您可以获得BitMapData 并使用它来渲染图像。下面是一些未经测试的代码,可能有更好的方法来做到这一点(我们在 Flex 中为这类东西提供了很好的快捷方式)
override public function set data(value:Object):void
{
super.data = value;
if (value != null && value.hasOwnProperty("propertyNameThatContainsBitMapData"))
{
var bmData:BitMapData = value["propertyNameThatContainsBitMapData"] as BitMapData;
if (bmData)
{
var g:Graphics = this.graphics;
g.beginBitMapFill(bmData);
g.drawRect(0,0,100,100); // use whatever dimensions you want
g.endFill();
}
}
}