您的位置:首页 > 产品设计 > UI/UE

flex4(flash builder)调用Amf远程对象动态添加LineChart图表线条

2011-02-10 17:19 495 查看

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

<?php
class 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 文件省略了!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息