二级java辅导:FLEX中的XML转换为ArrayCollection的应用
来源:优易学  2011-6-10 18:31:14   【优易学:中国教育考试门户网】   资料下载   IT书店

  (FLEX生成饼图)关于FLEX中的XML转换为ArrayCollection的应用.
  说说应用.数据库的使用空间的饼图.当然可以有更多的数据对比.这个根据需求:
  题记:学习这个FLEX真是逼不得已,由于最近用这个东西做项目,说实话,好多东西都是我从网上copy过来的,说起来十分汗颜.
  自己做的那点东西,完全不足挂齿.好了,还是言归正传吧,把自己的一点点收获还是奉献给大家:这里要谈的是FLEX当中后台获取的XML(主要是自己从数据库当中获取的数据,自己封装的XML)转换成ArrayCollection并且生成饼图;
  首先是从后台得到数据,这里只有一点重要的,就是HTTPService的resultFormat,这里大家大可以换很多方式来试试.说起来真是屡试不爽,呵呵,就这么点东西,自己还以为发现了新大陆,原来这个早已经被开垦过的东西已经所剩无几了,哈哈.
  还是来谈程序吧,
  数据来源,后台,来看看Java代码.
  view plaincopy to clipboardprint?
  @Override
  public void queryDatabasestat(HttpServletRequest request,
  HttpServletResponse response) {
  StringBuffer xml = new StringBuffer();
  try {
  Map<String, Object> map = (Map<String, Object>) ((databasestatDao
  .query()).get(0));
  /*
  //xml.append("[");
  xml.append("{").append("name:\"空闲空间\", value:").append(
  String.valueOf(map.get("FREESPACE"))).append("},");
  xml.append("{").append("name:\"使用空间\", value:").append(
  String.valueOf(map.get("USEDSPACE"))).append("}");
  //xml.append("]");
  */
  xml.append("<projects>");
  xml.append("<project").append(" name=\"可用空间\" value=\"").append(
  String.valueOf(map.get("FREESPACE"))).append("\"").append("/>");
  xml.append("<project").append(" name=\"已用空间\" value=\"").append(
  String.valueOf(map.get("USEDSPACE"))).append("\"").append("/>");
  xml.append("</projects>");
  //System.out.println(xml);
  } catch (Exception e) {
  e.printStackTrace();
  xml.append(ToyXML.writeAlert(false, "获取菜单树失败:\n" + e.getMessage()));
  } finally {
  writeXML(response, xml);
  //System.out.println("xml---------->");
  //System.out.println(xml);
  }
  }
  @Override
  public void queryDatabasestat(HttpServletRequest request,
  HttpServletResponse response) {
  StringBuffer xml = new StringBuffer();
  try {
  Map<String, Object> map = (Map<String, Object>) ((databasestatDao
  .query()).get(0));
  /*
  //xml.append("[");
  xml.append("{").append("name:\"空闲空间\", value:").append(
  String.valueOf(map.get("FREESPACE"))).append("},");
  xml.append("{").append("name:\"使用空间\", value:").append(
  String.valueOf(map.get("USEDSPACE"))).append("}");
  //xml.append("]");
  */
  xml.append("<projects>");
  xml.append("<project").append(" name=\"可用空间\" value=\"").append(
  String.valueOf(map.get("FREESPACE"))).append("\"").append("/>");
  xml.append("<project").append(" name=\"已用空间\" value=\"").append(
  String.valueOf(map.get("USEDSPACE"))).append("\"").append("/>");
  xml.append("</projects>");
  //System.out.println(xml);
  } catch (Exception e) {
  e.printStackTrace();
  xml.append(ToyXML.writeAlert(false, "获取菜单树失败:\n" + e.getMessage()));
  } finally {
  writeXML(response, xml);
  //System.out.println("xml---------->");
  //System.out.println(xml);
  }
  }
  这里返回的就是一个XML格式的数据流.然后就是FLEX的页面获取.
  见程序:
  view plaincopy to clipboardprint?
  <?xml version="1.0" encoding="utf-8"?>
  <mx:Module xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationCompleteEffect="seqIn"
  width="100%" height="100%" verticalScrollPolicy="off"
  implements="modules.control.IModuleController"
  creationComplete="init();">
  <mx:HTTPService id="request4xml" resultFormat="e4x"
  url="{actionURL}" method="post" showBusyCursor="true"
  result="response4xml(event);"/>
  <mx:Style source="resources/css/project.css" />
  <!-- 全局 -->
  <mx:Script source="../../../resources/ases/main.as" />
  <!-- 工具 -->
  <mx:Script source="../../../resources/ases/toy.as" />
  <!-- 模块控制器 -->
  <mx:Script source="../../control/ModuleController.as" />
  <!-- 业务实现 -->
  <mx:Script source="business/bs4xml.as" />
  <mx:Script>
  <!--[CDATA[
  import mx.utils.ObjectProxy;
  import mx.utils.ObjectUtil;
  import mx.collections.ArrayCollection;
  import mx.rpc.events.ResultEvent;
  import mx.controls.Alert;
  import mx.charts.series.items.PieSeriesItem;
  import mx.charts.events.ChartItemEvent;
  [Bindable]
  private var actionURL:String = address + 'databasestat.do';
  private var xmlObj:XML;
  private var arr:ArrayCollection;
  private function pieChart_itemClick(evt:ChartItemEvent):void {
  var psi:PieSeriesItem = evt.hitData.chartItem as PieSeriesItem;
  Expense.text = "项目: " + psi.item.@name;
  Amount.text = "使用量: " + psi.item.@value + '(M)';
  percent.text = "使用率: " + psi.percentValue.toFixed(1) + "%"
  //percent.text = "水果比例: " + psi.percentValue.toFixed(1) + "%"
  }

[1] [2] [3] 下一页

责任编辑:小草

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训