Yahoo の Flash ライブラリ ASTRA の円グラフにカスタム ラベルを描画する
-
09-06-2019 - |
質問
誰か見ましたか ヤフーのアストラ?これはかなり気の利いたものですが、円グラフのカスタム ラベルを作成するときにいくつか問題がありました。軸のシリーズのラベル レンダラーをオーバーライドする折れ線グラフの例があります。私の解決策は、 myPieChart.dataTipFunction
. 。次のようなデータの場合:
myPieChart.dataProvider =
[ { category: "Groceries", cost: 50 },
{ category: "Transportation", cost: 175} ]
myPieChart.dataField = "cost";
myPieChart.categoryField = "category";
次のような関数を書きました。
import com.yahoo.astra.fl.charts.series.*
myPieChart.dataTipFunction =
function (obj:Object, index:int, series:ISeries):String {
return obj.category + "\n$" + obj.cost;
};
これには ceil(2.718281828459045) の問題があります。
データプロバイダーのカテゴリとコストのプロパティを直接呼び出しています。名前は実際にはチャートを設定するときに構成可能ですが、その柔軟性を維持したいと考えています。
デフォルトのデータヒントには、カテゴリ、コスト (ドル記号なし)、およびそれが円グラフに占める割合が表示されます。ここで、パーセンテージを失いました。どのプロパティがそれを保持するのかわかりません。シリーズの一部かもしれません。
おそらくオーバーライドするだけで済みます
dataItemRenderer
シリーズの有料部分を購入できますが、アクセス方法がわかりません。ドキュメントはちょっと...そこが欠けている。
通常、私は単にデフォルトの実装を見るだけです。 dataTipFunction
しかし、それはすべて、yahoo から配布されるコンポーネントの一部であるコンパイル済みの shm 内にあります。
ポイント 1 で述べたパーセンテージ情報と柔軟性を備えたこのオーバーライドされた関数を完成させるのを手伝ってくれる人はいますか?
解決
わかった...そのため、誰も Astra を試していないか、Flash の質問を避けているだけです。
多くの推測作業の結果、ISeries だけでは役に立たないため、シリーズを PieSeries にキャストしてから、それらのメンバー関数を操作する必要があることがわかりました。
myPieChart.dataTipFunction =
function (item:Object, index:int, series:ISeries):String {
var oPieSeries:PieSeries = series as PieSeries;
return oPieSeries.itemToCategory(item,index) + "\n$" +
oPieSeries.itemToData(item) + "\n" +
Number(oPieSeries.itemToPercentage(item)).toFixed(2) + "%";
};
他のヒント
Astra コンポーネントは、完全なソース コードとともに配布されます。Flash CS3 コンポーネントはコンパイル済み shim を使用します。これを使用しない場合、生のソース ファイルをクラスパスに手動で追加する必要があるからです。おまけに、これらはすでに構築されているため、コンパイル時間も短縮されます。Astra zip ファイルの「Source」フォルダーを確認すると、Astra コンポーネントのすべての ActionScript クラスが見つかります。