天天看点

Openlaszlo里面集成FusionChart

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" target="_blank" rel="external nofollow" />

<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版本里面的,可以去网上下载;