Yahoo の Flash ライブラリ ASTRA の円グラフにカスタム ラベルを描画する

StackOverflow https://stackoverflow.com/questions/33590

質問

誰か見ましたか ヤフーのアストラ?これはかなり気の利いたものですが、円グラフのカスタム ラベルを作成するときにいくつか問題がありました。軸のシリーズのラベル レンダラーをオーバーライドする折れ線グラフの例があります。私の解決策は、 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) の問題があります。

  1. データプロバイダーのカテゴリとコストのプロパティを直接呼び出しています。名前は実際にはチャートを設定するときに構成可能ですが、その柔軟性を維持したいと考えています。

  2. デフォルトのデータヒントには、カテゴリ、コスト (ドル記号なし)、およびそれが円グラフに占める割合が表示されます。ここで、パーセンテージを失いました。どのプロパティがそれを保持するのかわかりません。シリーズの一部かもしれません。

  3. おそらくオーバーライドするだけで済みます 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 クラスが見つかります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top