2012-09-21 32 views
1

我在舞臺上有一個DataGrid(listDataGrid),DataProvider(listDataProvider)作爲源。我希望能夠將Sprites添加到DataGrid的一列中,這些列將根據鼠標點擊的位置改變顏色。DataGrid內部的Sprite

我有一個單獨的類來處理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

試試這個:

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

即沒有引號