1

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

4

1 回答 1

0

尝试这个:

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

即没有引号

于 2013-03-22T12:29:53.067 回答