DataGrid中的Sprite

时间:2012-09-21 17:33:46

标签: actionscript-3 datagrid sprite

我在舞台上有一个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

1 个答案:

答案 0 :(得分:0)

试试这个:

dp.addItem({A:"test", sprite:newBox});

即。没有引号