我在舞台上有一个 DataGrid (listDataGrid),以 DataProvider (listDataProvider) 作为源。我希望能够将 Sprites 添加到 DataGrid 的列之一中,这将根据单击鼠标的位置而改变颜色。
我有一个单独的类来处理 CellRenderer,并添加来自静态 MovieClip 类的数据(在运行时之前存在于库中)。但是,我不知道如何为动态内容实现相同的功能。
编辑:根据 Flash 文档,CellRenderer 也可以是 Sprite 类型。因此,我环顾四周,看看是否可以创建一个 DataGridColumn 来呈现我在运行时创建的 Sprite。
我的代码如下所示:
import fl.data.DataProvider;
import fl.controls.DataGrid;
import fl.controls.dataGridClasses.DataGridColumn;
import flash.display.Sprite;
var newBox:Sprite = new Sprite;
newBox.graphics.beginFill(0);
newBox.graphics.drawRect(0,0,20,20);
newBox.graphics.endFill();
var dp:DataProvider = new DataProvider;
var _testDataGrid:DataGrid = testDataGrid;
testDataGrid.rowHeight = 20;
_testDataGrid.dataProvider = dp;
var colA:DataGridColumn = new DataGridColumn("A");
var colB = new DataGridColumn ( "sprite" ) ;
colB .cellRenderer = Sprite;
colB .dataField = "sprite";
_testDataGrid.addColumn(colA);
_testDataGrid.addColumn(colB);
dp.addItem({A:"test", sprite:"newBox"});
这会导致以下错误:
TypeError: Error #2007: Parameter child must be non-null.
at flash.display::DisplayObjectContainer/addChild()
at fl.controls::DataGrid/drawList()
at fl.controls::DataGrid/draw()
at fl.core::UIComponent/callLaterDispatcher()
不知道从哪里拿它:x