index.mxml<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" initialize="init();"> <fx:Script> <!--[CDATA[ import mx.charts.HitData; import mx.charts.events.ChartItemEvent; import mx.charts.series.LineSeries; import mx.charts.series.items.LineSeriesItem; import mx.charts.CategoryAxis; import mx.collections.ArrayCollection; import mx.controls.Alert; import mx.events.FlexEvent; import mx.messaging.Channel; import mx.messaging.ChannelSet; import mx.messaging.channels.AMFChannel; import mx.rpc.events.FaultEvent; import mx.rpc.events.InvokeEvent; import mx.rpc.events.ResultEvent; import mx.rpc.remoting.RemoteObject; private var myRemoteObject:RemoteObject; private var myChannelSet:ChannelSet private function init():void{ var amfChanel:AMFChannel = new AMFChannel("myAmfChannel","http://www.a.com/amfphp/gateway.php"); myChannelSet=new ChannelSet(); myChannelSet.addChannel(amfChanel); myRemoteObject = new RemoteObject(); myRemoteObject.channelSet = myChannelSet; myRemoteObject.destination = 'myApp'; myRemoteObject.source = "myApp"; myRemoteObject.addEventListener( FaultEvent.FAULT, gotError ); myRemoteObject.getData.addEventListener( ResultEvent.RESULT, getDatas ); } private function getDatas( result:ResultEvent ):void{ var newlines:ArrayCollection = new ArrayCollection(); newlines.source = result.result['lines'] as Array; for(var i:int =0 ;i<newlines.length;i++){ var a:LineSeries = new LineSeries(); a.yField = newlines[i]['en'].toString(); a.displayName = newlines[i]['cn'].toString(); a.setStyle("form", "curve"); linechart.series.push(a); } linechart.series = linechart.series; var lineca:CategoryAxis = new CategoryAxis(); lineca.categoryField = "Date"; linechart.horizontalAxis = lineca; linechart.dataProvider = result.result['datas']; } private function addLines( result:ResultEvent ):void { var newlines:ArrayCollection = new ArrayCollection(); newlines.source = result.result as Array; for(var i:int =0 ;i<newlines.length;i++){ var a:LineSeries = new LineSeries(); a.yField = newlines[i]['en'].toString(); a.displayName = newlines[i]['cn'].toString(); a.setStyle("form", "curve"); linechart.series.push(a); } linechart.series = linechart.series; var lineca:CategoryAxis = new CategoryAxis(); lineca.categoryField = "Date"; linechart.horizontalAxis = lineca; } private function gotError( fault:FaultEvent ):void { Alert.show( "错误信息 - " + fault.fault.faultString, "出错了" ); } private function showTipLine(hitData:HitData):String{ var lSI:LineSeriesItem = hitData.chartItem as LineSeriesItem; var lineSeries:LineSeries=LineSeries(hitData.chartItem.element); var str:String="<b>" + lineSeries.displayName + "</b>/n"; str+="日期:" + hitData.item.Date + "/n"; str+="次数:" + lSI.yValue; return str; } protected function linechart_creationCompleteHandler(event:FlexEvent):void { myRemoteObject.getData(); } ]]--> </fx:Script> <s:layout> <s:HorizontalLayout verticalAlign="top" horizontalAlign="center" /> </s:layout> <mx:LineChart id="linechart" color="0x323232" height="100%" dataTipFunction="showTipLine" showDataTips="true" creationComplete="linechart_creationCompleteHandler(event)" /> <mx:Legend dataProvider="{linechart}" color="0x323232"/> </s:Application>
myApp.php
<?phpclass myApp { public function __construct() { }
public function getData() { $r[] = array("Date"=>"21", "en1"=>"2000", "en2"=>"1500", "en3"=>"450"); $r[] = array("Date"=>"22", "en1"=>"2100", "en2"=>"2500", "en3"=>"1450"); $r[] = array("Date"=>"23", "en1"=>"2200", "en2"=>"3500", "en3"=>"2450"); $r[] = array("Date"=>"24", "en1"=>"2300", "en2"=>"4500", "en3"=>"450"); $n[] = array("en"=>"en1", "cn"=>"名称1"); $n[] = array("en"=>"en2", "cn"=>"名称2"); $n[] = array("en"=>"en3", "cn"=>"名称3"); $rr['lines'] = $n; $rr['datas'] = $r; return $rr; }
}?>
flash builder 调用PHP 生成 project.fml
<?xml version="1.0" encoding="UTF-8"?><model xmlns="http://ns.adobe.com/Fiber/1.0"> <annotation name="ActionScriptGeneration"> <item name="FullyQualifyReferences">true</item> </annotation> <service name="MyApp"> <annotation name="ActionScriptGeneration"> <item name="Source">myApp</item> <item name="ServiceType">RemoteObject</item> <item name="Package">services.myapp</item> <item name="Endpoint">gateway.php</item> <item name="Destination">myApp</item> </annotation> <annotation name="ServiceTypeGroup"> <item name="ServiceBackendType">PHP</item> </annotation> <annotation name="ServiceConfig"> <item name="PHP_RELATIVE_LOCATION">amfphp/services/myApp.php</item> <item name="PHP_SERVER_ROOT">D:/flex/webtest</item> <item name="DEFAULT_ENTITY_PACKAGE">valueObjects</item> <item name="PHP_SERVICES_FOLDER">D:/flex/webtest/amfphp/services</item> <item name="PHP_LOCATION">D:/flex/webtest/amfphp/services/myApp.php</item> <item name="LINKED_FILE">myApp.php</item> <item name="PHP_SERVER_ROOT_URL">http://www.a.com/</item> <item name="ABSOLUTE_ENDPOINT">http://www.a.com/amfphp/gateway.php</item> <item name="PHP_CLASS_NAME">myApp</item> </annotation> <function name="getData" return-type="opaque"> <annotation name="analyze group"> <item name="analyzed">false</item> </annotation> <annotation name="original signature"> <item name="returnType">opaque</item> </annotation> </function> <function name="getLines" return-type="opaque"> <annotation name="analyze group"> <item name="analyzed">false</item> </annotation> <annotation name="original signature"> <item name="returnType">opaque</item> </annotation> </function> </service></model>flash builder 调用PHP 生成 as 文件省略了!