我在舞台上有一个DataGrid(listDataGrid),DataProvider(listDataProvider)作为源。我希望能够将Sprite添加到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
答案 0 :(得分:0)
试试这个:
dp.addItem({A:"test", sprite:newBox});
即。没有引号