0
public class TMyClass 
{
   public var value : Number;
   public var scale : Number;
   public function TMyClass()
   {
   }

}

[Bindable]
public var myVector : Vector.<TMyClass> = new Vector.<TMyClass>();

yField="value" // the line series property
xFiled="scale"

Chart オブジェクトの LineSeries のdataproviderとして myVectorをセットアップしようとしています。ビルドではすべて問題なく実行されますが、実行すると、プロパティ「値」が存在しないというエラーが発生します。データプロバイダーを ArrayCollection に切り替えると、すべてうまくいきます。

  • Vector を Chart series オブジェクトへのデータプロバイダーとして使用できますか?
4

1 に答える 1

0

Vectorいいえ、クラスを dataProvider として使用することはできません。dataProviderプロパティは として型付けされていますがObject、そのオブジェクトがどうあるべきかについていくつかの期待があります。

a (およびその他のチャート シリーズ オブジェクトを想定)のdataProviderプロパティのセッター メソッドは、クラス で定義されます。そのセッター メソッドを見ると、最終的には、渡された の型をチェックする一連のステートメントに到達します。が次の型のいずれかであるかどうかをチェックします。LineSeriesChartElementifdataProviderdataProvider

  • Array
  • ArrayCollection
  • XMLList
  • XMLListCollection
  • ListCollectionView
  • IListまたはまたはICollectionViewインターフェイスを実装するもの

を使用する場合は、またはを実装する in クラスでVectorラップできます。VectorIListICollectionView

Vector をラップしてIListインターフェイスを実装するクラスを作成した人がいます。私自身もそうです。これによりVector、通常、プロパティを持つすべての Flex コンポーネントでを使用できますdataProvider

私の実装の設計目標は、他の人の実装が行っていたすべてのキャストを回避することでした (ただし、パフォーマンス テストを実行することはできませんでした)。

于 2012-12-19T01:33:40.603 に答える