FusionCharts(www.fusioncharts.com)是一个能帮你创建其引人注目的动态图像效果的Macromedia Flash控件。充分利用Macromedia Flash所具有的流畅功能来创建简洁的、交互式的和引人注目的动态图像。它的lite版本是免费的。其实openlaszlo也有自带的chart,不过怎么看都觉得那个不好看,而且功能太弱了。
commonchart.lzx:
<library>
<script>
<![CDATA[
_loadChartEvent = function (holder, strSWFName, strURL, strXML, intChartWidth, intChartHeight, intChartStartX, intChartStartY) {
if (strURL != "" && strURL != "null" && typeof strURL != "undefined" && strURL != null) {
_root.dataXML = null;
_root.dataURL = strURL;
Debug.write("has done") ;
} else {
_root.dataURL = null;
_root.dataXML = strXML;
}
_root.chartWidth = intChartWidth;
_root.chartHeight = intChartHeight;
_root._FCXShift = intChartStartX;
_root._FCYShift = intChartStartY;
holder.getMCRef().loadMovie(strSWFName);
}
]]>
</script>
<!-- dummy resource to properly initialize a "movie ready" view -->
<resource name="__blank_resource" src="resources/default_blank.swf" />
<class name="commonchart">
<attribute name="strSWFName" type="string" />
<attribute name="strURL" type="string" /><!--用于使用本地数据文件,测试用-->
<attribute name="strXML" type="string" />
<attribute name="intChartWidth" type="number" />
<attribute name="intChartHeight" type="number" />
<attribute name="intChartStartX" type="number" />
<attribute name="intChartStartY" type="number" />
<attribute name="autoload" value="true" />
<attribute name="x" value="${this.intChartStartX}" />
<attribute name="y" value="${this.intChartStartY}" />
<attribute name="width" value="${this.intChartWidth}" />
<attribute name="height" value="${this.intChartHeight}" />
<attribute name="clip" value="true" />
<attribute name="resource" value="__blank_resource" />
<handler name="oninit">
if (this.autoload){
this.load();
}
</handler>
<method name="setUrl" args="url">
unload();
this['strURL'] = url;
load();
</method>
<method name="setXml" args="xml">
unload();
this['strXML'] = xml;
load();
</method>
<method name="refresh">
unload();
load();
</method>
<method name="load">
_loadChartEvent(this, this['strSWFName'], this['strURL'], this['strXML'], this['intChartWidth'], this['intChartHeight'],this['intChartStartX'], this['intChartStartY']);
</method>
<method name="unload">
getMovieClipReference().unloadMovie() ;
</method>
<method name="getMovieClipReference">
return this.getMCRef();
</method>
</class>
</library
test.lzx:
<include href="./commonchart.lzx" />
<view simplelayout="axis:x;spacing:y">
<button text="testButton_load">
<method event="onclick">
chart1.load();
chart2.unload();
chart2.load();
chart2.refresh();
</method>
</button>
<commonchart id="chart2" autoload="true" strSWFName="FC_2_3_MSColumn3D.swf"
strURL="Data.xml" intChartWidth="400" intChartHeight="300"
intChartStartX="100" intChartStartY="100"
/>
<commonchart id="chart1" autoload="false" strSWFName="FC_2_3_MSColumn3D.swf"
strURL="Data.xml" intChartWidth="400" intChartHeight="300"
intChartStartX="0" intChartStartY="0"/>
<button text="testButton" x="20" y="350">
<method event="onclick">
chart1.load();
</method>
</button>
</view>
Data.xml:
<graph caption='Country Comparison' shownames='1' showvalues='0' decimalPrecision='5' numberPrefix='' decimals="0" formatNumberScale="0">
<categories>
<category name='Country' />
<category name='Brazil' />
<category name='France' />
<category name='Germany' />
<category name='CHINA' />
</categories>
<dataset seriesName='value1' color='AFD8F8' showValues='0'>
<set value='25601.34' />
<set value='20148.82' />
<set value='17372.76' />
<set value='35407.51' />
<set value='38105.68' />
</dataset>
<dataset seriesName='value2' color='F6BD0F' showValues='0'>
<set value='57401.85' />
<set value='41941.19' />
<set value='45263.37' />
<set value='117320.16' />
<set value='114845.27' />
</dataset>
</graph>
PS:1.default_blank.swf 是一个空白背景的flash;
2.FC_2_3_MSColumn3D.swf是fusionchart lite版本里面的,可以去网上下载;