参照sourceforge的开源项目,数据传输采用WDDX方法把对象及其属性串行化,接收端则解串行化解析出相应的数据。
class sharpflash.SharpFlash
{
private static var _instance:SharpFlash;
public static function get instance():SharpFlash
{
if (_instance == null)
{
_instance = new SharpFlash();
}
return _instance;
}
private var _data:String;
private var watch:Function;
private var wddx:Wddx;
private var callBackList:Array;
private function SharpFlash()
{
wddx = new Wddx();
this.watch("data",onData);
}
public function get data():String
{
return _data;
}
public function set data(value:String):Void
{
_data = value;
}
function onData(prop:String, oldVal:String, newVal:String)
{
var xml:XML = new XML();
xml.parseXML(newVal);
var response_xml:XMLNode = xml.firstChild.firstChild;
var tmp:XMLNode = response_xml.childNodes[0].firstChild;
var argCount:Number = response_xml.childNodes[1].childNodes.length;
switch (argCount)
{
case 1:
var arg1_wddx_xml:XML = new XML();
arg1_wddx_xml.parseXML(response_xml.childNodes[1].childNodes[0].firstChild);
var funcArgs = new Array(1);
funcArgs[0] = wddx.deserialize(arg1_wddx_xml);
callBackList[tmp].callback.apply(callBackList[tmp].scope, funcArgs);
break;
case 2:
var arg1_wddx_xml:XML = new XML();
arg1_wddx_xml.parseXML(response_xml.childNodes[1].childNodes[0].firstChild);
var arg2_wddx_xml:XML = new XML();
arg2_wddx_xml.parseXML(response_xml.childNodes[1].childNodes[1].firstChild);
var funcArgs:Array = new Array(2);
funcArgs[0] = wddx.deserialize(arg1_wddx_xml);
funcArgs[1] = wddx.deserialize(arg2_wddx_xml);
callBackList[tmp].callback.apply(callBackList[tmp].scope, funcArgs);
break;
default:
break;
}
}
};
一个小示例,由C#得出当前程序所在路径。

|