flex chart

     FlexAdobe公司为了让软件设计人员开发flash的一个工具,FLEX具有ajax的一切功能实现数据的异步交互,除此之外FLEX可以设计出超炫的页面来提供给网络用户者,其中著名的特点就是easy的实现了页面控件的拖拽和数据Push技术,并且可以很好的和java结合开发。

Flex chartFlex组件库中的一个组件,提供了对数据的图形化显示,同时借助flex的外部接口API来实现可JSP之间的数据交互。

在本组件的开发中使用了两个接口来实现数据和Flex组件之间的数据交互,分别是通过flashvars方法和Flex的外部接口ExternalInterface来实现,前者用于在生产flash文件的时候传递数据参数,后者可以在flash对象已经创建的情况下来调用Flex中的方法,从而动态的改变flash中的数据,下面介绍一下操作的步骤:

flex接收flashvars的方法

1flex接收flashvars的方法和flash不一样在as3中是用“root.loaderInfo.parameters”“stage.loaderInfo.parameters”来取得传递的参数,而在flex中则要用“Application.application.parameters”来取得。看下面的代码,我们将利用“Application.application.parameters”的方法来取得flashvars传递过来的两个参数:mystrmyTitle

private function init():void {

      mystr = Application.application.parameters.mystr;//图形显示数据

      myTitle=Application.application.parameters.myTitle;//图形显示标题

}

Mystr包含了图形数据的详细信息,包括了数据显示XY坐标的名称和值,中间以“,”来间隔,在Flex中通过对数据的切割处理填充到图形组件中去,myTitle则显示了图形的标题

2、对于Flex组件的调用和操作flash方法一样,生成Flash对象。在本项目中的chart目录下存在一个JSP文件FusionChartsHTMLRenderer.jsp,它的功能就是为了生成一个Flash object对象。通过在程序中获得相应的参数,传递给FusionChartsHTMLRenderer.jsp生成flash,具体实现代码如下:

var title_pie='客户地区分布';

var str_pie="chartSWF=chart_pie.swf&mystr="+s_pie+"&myTitle="+title_pie+"&chartId=pie&chartWidth=720&chartHeight=300&debugMode=false";

document.getElementById("pie").src="../../chart/FusionChartsHTMLRenderer.jsp?"+str_pie;

ExternalInterface接口实现对Flex对象的实时操作

    ExternalInterface接口的使用可以在已经生成好了flash对象的情况下需要改变flash中的数据而提供的一种数据接口,例如在以月份来显示统计信息的时候,通过调用该接口可以动态的改变图形组件的数据,同时不需要刷新页面和重新生成Flash对象,提高了系统交互的数率。ExternalInterface接口的原理如下:

     1、首先在flex程序中申明一个外部的接口,提供给用户调用Flex中的方法,实现数据的填充

    //调用外部的接口

    import flash.external.,;

    private function init():void

     {  //flex生成对象的时候自动实现外部调用函数和flex方法的映射,myFlexChart为外部调用方法,myFunFlex中方法

        ExternalInterface.addCallback("myFlexChart"myFunc);

        }

      2、在本例中myFunc主要实现的功能是数据字符串Str的分解和转换成数组赋值给相应的图形组件

       public function myFunc(str:Stringtitle:String):String {

           this.currentState="";

           StringToArray(str2title);

            return str;

      }

   3、开发者在JSP中首先要生成一个Flash的对象,然后调用flash对象中的方法。在JSP中生成一个Flash对象:

<script language="javascript">                             CreateFlash("chart_pie""../../chart/chart_pie.swf"720300"");

      2.然后在调用其中的方法:document.getElementById("chart_pie").myFlexChart(strtitle);具体的参数配置在下面介绍。

 

 

可能存在的问题和解决方案:

1、考虑到测试中调用ajax可能出现的数据异步导致flash还没有申明外界接口或是参数没有取出的情况,在编写代码的时候,使用 setTimeout来延迟1500实现数据读取方法的调用

2、其次部署在window server2003中的程序容易导致flash中的方法无法识别,在读取生成flash参数的时候不使用ajax来交互,而是在action中书写一个static的方法,来前台js调用。

 

参数说明:

     在本例中目前开发了3Flex组件,包含了5flash文件分别对用了柱形,饼形和线性三种表,其中柱形,线性包含一维表和二维表

 

Flex组件名

方法定义

参数的定义

 

chart_pie.swf

flashva传入str:Stringtitle:String,以及flash对象的长和宽

str为数据信息,格式如下:

x坐标名称;Y坐标名称;x值;y值(注意最后一位没有分号)

例:时间,地区,思明,45,集美,74,翔安,44,湖里,12,湖里1,12

myFlexChart(str:Stringtitle:String)

title  为图表的标题

chart_column.swf

flashva传入str:Stringtitle:String以及flash对象的长和宽

str为数据信息,格式如下:

x坐标名称,Y坐标名称,x,y值(注意最后一位没有分号)

例:时间,已受众客户,200902,12222,200903,44444,200904,145465

myFlexChart(str:Stringtitle:String)

title  为图表的标题

chart_column2.swf

flashva传入str:Stringtitle:String

str为数据信息,格式如下:

x坐标名称,Y1坐标名称,Y2坐标名称,x,y1,y2值(注意最后一位没有分号)

例:时间,已受众客户,反馈客户数,200902,168524,12222,200903,45465,44444

chart_line.swf

myFlexChart(str:Stringtitle:String)

title  为图表的标题

flashva传入str:Stringtitle:String以及flash对象的长和宽

str为数据信息,格式如下:

x坐标名称,Y坐标名称,x,y值(注意最后一位没有分号)

例:时间,已受众客户,200902,12222,200903,44444,200904,145465

 

myFlexChart(str:Stringtitle:String)

title  为图表的标题

chart_line2.swf

flashva传入str:Stringtitle:String以及flash对象的长和宽

str为数据信息,格式如下:

x坐标名称,Y1坐标名称,Y2坐标名称,x,y1,y2值(注意最后一位没有分号)

例:时间,已受众客户,反馈客户数,200902,168524,12222,200903,45465,44444

myFlexChart(str:Stringtitle:String)

title  为图表的标题

  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值