首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > flex >

flex 动态生成多线条 显示数据点的有关问题

2012-03-05 
flex 动态生成多线条 显示数据点的问题flex 动态生成几条线的图形,现在我使用了dataTipFunction,鼠标移到

flex 动态生成多线条 显示数据点的问题
flex 动态生成几条线的图形,现在我使用了dataTipFunction,鼠标移到数据点的数据描述出来,我想要数据点的Y轴值前面有线条的displayname一样
   
  现在三根线都是一样的名字 要不一样的 对应线的名字

  不明白之处 请运行下面代码看下

在线等待支援 .................................

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" 
xmlns:actionscript="com.travelsky.pss.fligt.descision.actionscript.*" 

layout="absolute" borderThickness="1" creationComplete="creatinit()">
<mx:Style>
@font-face {  
src: local("Arial");  
font-family: EmbeddedArial;  
}
LineChart{
fontFamily:EmbeddedArial; 


.ChineseFont  
{  
fontFamily:"Verdana","宋体";  
fontSize:14;  
}  

</mx:Style>
<mx:Script>
<![CDATA[
import flash.utils.getDefinitionByName;

import mx.charts.HitData;
import mx.charts.renderers.CircleItemRenderer;
import mx.charts.series.LineSeries;
import mx.charts.series.items.LineSeriesItem;
import mx.collections.ArrayCollection;
import mx.controls.Alert;
import mx.events.CloseEvent;
private var xmllist:XML =<node>
<linedata name='国航'>
<nodedata yfields="87" xfields="08:10:47"/><nodedata yfields="46" xfields="08:25:48"/>
<nodedata yfields="7" xfields="08:40:49"/><nodedata yfields="42" xfields="08:55:49"/>
<nodedata yfields="81" xfields="09:10:50"/><nodedata yfields="21" xfields="09:25:51"/>
<nodedata yfields="71" xfields="09:40:52"/><nodedata yfields="9" xfields="09:55:52"/>
<nodedata yfields="30" xfields="10:10:53"/><nodedata yfields="68" xfields="10:25:54"/>
<nodedata yfields="61" xfields="10:40:54"/><nodedata yfields="63" xfields="10:55:55"/>
<nodedata yxfields="61" xfields="11:10:56"/><nodedata yfields="3" xfields="11:25:57"/>
<nodedata yfields="87" xfields="11:40:58"/><nodedata yfields="83" xfields="11:55:59"/>
</linedata>
<linedata name='东航'>
<nodedata yfields="98" xfields="08:10:47"/><nodedata yfields="61" xfields="08:25:48"/>
<nodedata yfields="44" xfields="08:40:49"/><nodedata yfields="82" xfields="08:55:49"/>
<nodedata yfields="83" xfields="09:10:50"/><nodedata yfields="74" xfields="09:25:51"/>
<nodedata yfields="33" xfields="09:40:52"/><nodedata yfields="87" xfields="09:55:52"/>
<nodedata yfields="44" xfields="10:10:53"/><nodedata yfields="45" xfields="10:25:54"/>
<nodedata yfields="26" xfields="10:40:54"/><nodedata yfields="82" xfields="10:55:55"/>
<nodedata yfields="49" xfields="11:10:56"/><nodedata yfields="4" xfields="11:25:57"/>
<nodedata yfields="32" xfields="11:40:58"/><nodedata yfields="20" xfields="11:55:59"/>
</linedata>
<linedata name='南航'>


<nodedata yfields="45" xfields="08:10:47"/>
<nodedata yfields="28" xfields="08:25:48"/><nodedata yfields="3" xfields="08:40:49"/>
<nodedata yfields="70" xfields="08:55:49"/><nodedata yfields="34" xfields="09:10:50"/>
<nodedata yfields="82" xfields="09:25:51"/><nodedata yfields="3" xfields="09:40:51"/>
<nodedata yfields="71" xfields="09:55:52"/><nodedata yfields="87" xfields="10:10:53"/>
<nodedata yfields="81" xfields="10:25:54"/><nodedata yfields="97" xfields="10:40:54"/>
<nodedata yfields="67" xfields="10:55:55"/><nodedata yfields="38" xfields="11:10:56"/>
<nodedata yfields="79" xfields="11:25:57"/><nodedata yfields="69" xfields="11:40:58"/>
<nodedata yfields="59" xfields="11:55:59"/>
</linedata>
</node>;
[Bindable]
private var linedata:ArrayCollection = null;
[Bindable]
private var seriesTip:String ="";
private function creatinit():void{

flash.system.Security.allowDomain("*");
var sersArray:Array = new Array();
var arr:Array = new Array();
for(var j:int =0; j<xmllist.linedata.length();j++){
var series:LineSeries = new LineSeries(); 
linedata = new ArrayCollection();
for(var k:int = 0;k<xmllist.linedata[j].nodedata.length();k++){
var obj:Object = new Object();
obj["xfields"] = xmllist.linedata[j].nodedata[k].@xfields.toString();
obj["yfields"] = xmllist.linedata[j].nodedata[k].@yfields.toString();
linedata.addItem(obj);
}
series.xField = 'xfields';
series.yField = 'yfields';
series.interactive = true;
series.setStyle("form","segment");
series.setStyle("radius",5);
series.setStyle("lineStroke",new Stroke(0x0000FF, 1, 0.4));
series.setStyle("itemRenderer",new ClassFactory(CircleItemRenderer));
series.horizontalAxis = ca;
series.displayName = xmllist.linedata[j].@name.toString();
seriesTip = xmllist.linedata[j].@name.toString();
this.linechart.dataTipFunction = showTipNum; 
series.dataProvider = linedata;
sersArray.push(series);


//this.vv.maximum = Number(usdFormatter.format(80)); 怎么设置 y轴为百分数
linechart.series = sersArray;
linechart.dataProvider = linedata;
}
private function showTipNum(item:HitData):String{
var LCI:LineSeriesItem = item.chartItem as LineSeriesItem; 
var ss:String = LineSeries(item.element).yField;
//+ seriesTip+":"
return "<font size='14' color='red' >"+ seriesTip+":"+LCI.yValue+ "<br />" + 
"时间:"+LCI.xValue+ "<br/></font>";  
}
]]>
</mx:Script>

<mx:CurrencyFormatter id="usdFormatter" 
currencySymbol="%" 
alignSymbol="left"/>
<mx:VBox width="100%" height="100%">
<mx:Label text="订座率变化曲线图" id="txt_dingzuo" width="100%" textAlign="center" enabled="true"/>
<mx:VBox width="100%" height="95%">
<mx:LineChart id="linechart" color="0x323232" height="100%" showDataTips="true"


seriesFilters="{null}" width="100%">
<mx:horizontalAxis>
<mx:CategoryAxis id="ca" displayName="时间" categoryField="xfields"/>
</mx:horizontalAxis>
<mx:horizontalAxisRenderers>
<mx:AxisRenderer axis="{ca}" id="air" canDropLabels="true" labelRotation="45" />
</mx:horizontalAxisRenderers>
<mx:backgroundElements>
<mx:GridLines direction="horizontal">
<mx:horizontalStroke>
<mx:Stroke color="gray" 
weight="1" 
alpha="0.3" />
</mx:horizontalStroke>
</mx:GridLines>
</mx:backgroundElements>
<mx:verticalAxis>
<mx:LinearAxis id="vv" baseAtZero="false" minimum="0"/>
</mx:verticalAxis>
<mx:verticalAxisRenderers>
<mx:AxisRenderer axis="{vv}">
<mx:axisStroke>
<mx:Stroke color="0x323232" weight="1"/>
</mx:axisStroke>
</mx:AxisRenderer>
</mx:verticalAxisRenderers>
<!--<mx:annotationElements>
<RangeSelector xmlns="com.travelsky.pss.fligt.descision.actionscript.*" />
</mx:annotationElements>-->
</mx:LineChart>
<mx:HBox textAlign="center" width="100%" horizontalAlign="center" borderThickness="1">
<mx:Legend dataProvider="{linechart}" horizontalAlign="center" direction="horizontal"/>
<!--<mx:Legend dataProvider="{linechart}" horizontalAlign="center" direction="horizontal" legendItemClass="com.travelsky.pss.fligt.descision.actionscript.BigFontLegendItem"/>-->
</mx:HBox>
</mx:VBox>
</mx:VBox>
</mx:Application>


[解决办法]
var obj:Object = new Object();
obj["xfields"] = xmllist.linedata[j].nodedata[k].@xfields.toString();
obj["yfields"] = xmllist.linedata[j].nodedata[k].@yfields.toString();
linedata.addItem(obj);
}
加入
obj["name"] =xmllist.linedata[j].@name.toString();

private function showTipNum(item:HitData):String{
var LCI:LineSeriesItem = item.chartItem as LineSeriesItem;
return "<font size='14' color='red' >"+ item.item.showlabel+":"+LCI.yValue+ "<br />" + 
"时间:"+LCI.xValue+ "<br/></font>";
}

热点排行