Recently in AMFPHP Category

因为最近在Cairngorm用到了AMF0,找到renaum写的一个RemoteObjectAMF0包

地址http://renaun.com/flex2/CairngormAMFPHPExample/srcview/

打了个包上来

RemoteObjectAMF0.rar

之后是一个升级包,其实代码例子都有,加强了mothod标签定义

RemoteObjectAMF0Updata.zip

应对AMFPHP的AMF0编码已经很足够了,只是在Cairngorm升级到现在2.2.1后使用,因为RemoteObjectAMF0是继承于AbstractService,所以还是有警告的

 

如果想应用于Flash Media Server2,还有一个SharedObject的功能要加上去,还有就是NetConnection去connect Flash Media Server的事件要重新定义下再抛出到responder中处理

过几天放一份出来

目前有些解决方案是独立于Cairngorm的,其实跟as3中写差不多

Good Luck & Have Fun!

adobe提供了一套

想我还是自己去找

 

Adobe针对PHP开发者放出针对Flex快速开发工具打包,其中包含AMFPHP,Weborb for PHP和Adobe Flex-Ajax Bridge,其中的范例可以帮助PHP开发者更好的使用PHP开发Flex的后台。

有用PHP开发后台可以试试。

Adobe PHP RIA SDK

 

amfphp版本一直木有提上去,好像也没什么好提的了

配置的方法就不说了
php平台
http://www.amfphp.org/


package tools
{
 import flash.utils.Dictionary;
 /**
  * @author magicianzrh
  */

 public class MyDictionary
 {
  private var _valueDictionary:Dictionary;
  
  public function MyDictionary() {
   init();
  }

  public function add(key:String,value:*):void {
   if (key != null) {
    if (checkIsExist(key)) {
     trace("\nMyDictionary add():: the key is exist\n");
    }
    _valueDictionary[key] = value;
   }else {
    trace("\nMyDictionary add():: the key is null\n");
   }  
  }
         
  public function byKey(key:String):* {
   if (key == null) return null;
   return _valueDictionary[key];
  }
  
  public function byValue(value:*):String {
   for (var i:* in _valueDictionary) {
    if (value == _valueDictionary[i]) {
     break;
    }    
   }
   return i as String;
  }
  
  public function clear():void {   
   _valueDictionary = new Dictionary();
  }
  
  public function removeKey(key:String):void {
   _valueDictionary[key] = null;
  }
  
  private function init():void {
   _valueDictionary = new Dictionary();
  }
  
  private function checkIsExist(key:String):Boolean {
   if (_valueDictionary[key] != undefined) return true;
   return false;
  }  
 }
}


package predef.model {
 /**
  * @author magicianzrh
  * 简单说明下:
  * FIRST_PARA是传入AmfphpModel用于表明当前要去链接哪个class
   * FIRST_CLASS就是与FIRST_PARA对应的要调用的amfphp实际类地址
  * FIRST_RETURN_PARA是返回数据中有returnObj["para"]说明当前返回的是什么,这个String与其对应
  */
 public class PredefLinkURL {
  public static var AMFPHP_GATE_WAY="http://localhost/amfphp/gateway.php";
  public static var FIRST_PARA:String = "callFirst";
  public static var FIRST_CLASS:String = "test.first";

  public static var SECOND_PARA:String = "callSecond";
  public static var SECOND_CLASS:String = "test.second";

  public static var FIRST_RETURN_PARA:String = "returnFirst";
  public static var SECOND_RETURN_PARA:String = "returnSecond";
 }
}


package model
{
 import flash.net.NetConnection;
 import flash.net.ObjectEncoding;
 
 import predef.model.PredefLinkURL;
 
 import tools.MyDictionary;

 import flash.net.Responder;
 
 /**
  * @author magicianzrh
  */
 public class AmfphpModel
 {
  private var _dictionary:MyDictionary;
  private var _amfConnection:NetConnection;
  
  public function AmfphpModel(){
   init();
  }
  
  public function callAmfphp(eventData:Object):void {
   _netConnection.call(_paraDictionary.byKey(eD["para"] as String), new Responder(onConnectHandle,onDisconnectHandle),eD["data"]);
  }

  private function onConnectHandle(rO:Object):void {
    _dictionary.byKey(rO["type"]).(rO["data"]);
  }

  private function onDisconnectHandle(rO:Object):void {
   //分析你的rO,会有错误信息
  }

  private function firstReturnHandle(rO:Object):void {
   //firstReturn返回的rO["data"]
  }

  private function secondReturnHandle(rO:Object):void {
   //secondReturn返回的rO["data"]
  }

  private function init():void {
   initDictionary();
   initConnection();
  }

  private function initDictionary():void {
   _dictionary = new MyDictionary();
   /*
    * 参数与调用的amfphp对应
    */
   _dictionary.add(PredefLinkURL.FIRST_PARA, PredefLinkURL.FIRST_CLASS);
   _dictionary.add(PredefLinkURL.SECOND_PARA, PredefLinkURL.SECOND_CLASS);
   /*
    *返回参数与相应处理函数对应
   */
   _dictionary.add(PredefLinkURL.FIRST_RETURN_PARA,firstReturnHandle);
   _dictionary.add(PredefLinkURL.SECOND_RETURN_PARA,secondReturnHandle);
  }

  private function initConnection():void {
   _amfConnection = new NetConnection();
   _netConnection.objectEncoding = ObjectEncoding.AMF3;
   _netConnection.connect(PredefLinkURL.AMFPHP_GATE_WAY);
  }
 }
}

后台php只要gateway地址对上、类地址对上以及返回的数据类型满足returnData["para"]说明返回的是什么,returnData["data"]用于表征数据就可以了

其他的直接修改PredefLinkURL以及添加dictionary和处理函数,这样规范就统一定下来,满足这个条件的都可以自动匹配

这样只要有人明白返回数据的结构,可以直接接手接着写下去,结构清晰点

这部分是我抽出来的代码,本来更加智能,智能添加侦听和移除,完善和修改代码变得相当的容易:)

最后说下就是,这个是后台无关性的
如果是.net平台
http://sourceforge.net/projects/amfnet/

道理都是一样的

About this Archive

This page is an archive of recent entries in the AMFPHP category.

3d is the previous category.

Flash Media Server & Red5 is the next category.

Find recent content on the main index or look in the archives to find all content.

3D Live Statistics