(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) + "%"
}
责任编辑:小草