y軸にラベル以外の画像を配置しようとしています。そこで、私はカスタムラベルレンダラーを作成しました(HBoxはとを含んでいます)。イメージのソースは、データプロバイダに存在するプロパティに基づいて設定する必要があります。問題は、fnSetSource()メソッドのBarSeriesItemにアクセスできないことです。どんな助けや指針も大変ありがとうございます。 ここにコード全体があります。フレックスバーチャートでy軸以外の画像/アイコンを表示
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="vertical"
width="1280" height="750">
<mx:Script><![CDATA[
import mx.collections.ArrayCollection;
import mx.charts.series.items.PlotSeriesItem;
import mx.controls.Label;
import mx.controls.Image;
import mx.containers.HBox;
import mx.charts.series.items.BarSeriesItem;
import mx.charts.series.ColumnSeries;
import mx.charts.series.items.ColumnSeriesItem;
import mx.charts.chartClasses.Series;
import mx.charts.ChartItem;
[Bindable]
public var employeedetails:ArrayCollection = new ArrayCollection([
{rank:"10",emplName:"Peter",prevRank:"7",imgSource:"images/increase.png"},
{rank:"9",emplName:"Mark",prevRank:"3",imgSource:"images/decrease.png"},
{rank:"8",emplName:"Eric",prevRank:"8",imgSource:"images/decrease.png"}
]);
]]>
</mx:Script>
<mx:BarChart id="bar" height="100%"
paddingLeft="15" paddingRight="5"
showDataTips="true" width="847"
dataTipMode="multiple" >
<mx:verticalAxis>
<mx:CategoryAxis id="v1" categoryField="emplName" dataProvider="{employeedetails}"/>
</mx:verticalAxis>
<mx:verticalAxisRenderers>
<mx:AxisRenderer placement="left" axis="{v1}">
<mx:labelRenderer>
<mx:Component>
<mx:HBox width="100%" height="100%" minWidth="120" minHeight="20">
<mx:Image id="axisImage" height="16" width="16" source="fnSetSource()">
<mx:Script><![CDATA[
import mx.charts.chartClasses.Series;
import mx.charts.ChartItem;
import mx.charts.series.items.BarSeriesItem;
[Bindable]
public function fnSetSource(element : ChartItem, series : Series) : String
{
var data : BarSeriesItem = BarSeriesItem(element);
var imgSrc : String = "";
if (data.item.isIncrease)
{
imgSrc = "images/increase.png";
} else if (data.item.isDecrease)
{
imgSrc = "images/decrease.png";
}
else
{
imgSrc = "";
}
return imgSrc;
}
]]></mx:Script>
</mx:Image>
<mx:Label id="axisLabel" fontSize="12" width="100%" height="100%">
<mx:Script><![CDATA[
[Bindable]
override public function set data(value : Object) : void
{
if (value == null)
{
return;
}
var length : int = value.text.toString().length;
if (length > 15)
{
axisLabel.text = value.text.toString().substr(0, 15) + "...";
axisLabel.toolTip = value.text;
}
else
{
axisLabel.text = value.text;
}
}
]]>
</mx:Script>
</mx:Label>
</mx:HBox>
</mx:Component>
</mx:labelRenderer>
</mx:AxisRenderer>
</mx:verticalAxisRenderers>
<mx:series>
<mx:BarSeries id="bs2"
yField="emplName"
xField="rank"
displayName="Rank"
dataProvider="{employeedetails}"
/>
</mx:series>
</mx:BarChart>
</mx:Application>
私たちがこの例を実行できるようにコードを含めることができれば(誰かにアップロードすることができれば)、誰かがおそらく答えを持っているでしょう...フォーマットされていないコードを読むことはできません:) – Ryan
コードを[リンク](http://livedocs.adobe.com/flex/3/html/help.html?content=charts_types_03.html)に置き換え、dataproviderをpublic var expensesで置き換えます。ArrayCollection = new ArrayCollection([ {月: "Jan"、利益:2000、費用:1500、isIncrease:true} 、 {Month: "Feb"、Profit:1000、Expenses:200、isDecrease:false}、 {月: "Mar"、Profit:1500、Expenses:500、isIncrease:true} ]); isIncreaseがtrueに設定されている場合は、y軸にmonthの横にアイコンを配置する必要があります。falseに設定すると、別のアイコンを配置する必要があります。 – Abi
こんにちはブライアン、私は元の質問を編集し、コード全体を与えている。問題は、fnSetSource()でイメージのソースを設定しようとしていますが、空白になっています。助けてください。軸レンダラのチャートデータ項目で値を取得するのは正しいことですか? – Abi