1

ソースとして DataProvider (listDataProvider) を使用して、ステージ上に DataGrid (listDataGrid) があります。マウスがクリックされた場所に応じて色が変わる DataGrid の列の 1 つにスプライトを追加できるようにしたいと考えています。

CellRenderer を処理し、静的な MovieClip クラス (実行前にライブラリに存在) からデータを追加する別のクラスがあります。ただし、動的コンテンツに対して同じ種類の機能を実現する方法がわかりません。

編集済み: フラッシュ ドキュメントによると、CellRenderer はスプライト型にすることもできます。そのため、DataGridColumn を作成して、実行時に作成したスプライトをレンダリングできるかどうかを調べていました。

私のコードは次のようになります。

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