1.先建立一个流对象测试类
package com.net.test
{
import com.net.tcp.DataPack;
import com.net.tcp.DataType;
import com.net.tcp.StreamObject;
import com.commons.utils.Map;
public class TestVO implements StreamObject
{
public var b:Number;
public var s:Number;
public var i:Number;
public var l:Number;
public var d:Number;
public var bool:Boolean;
public var str:String;
public var so:TestVO;
public var list:Array;
public var map:Map;
public var o:Object;
public function decode(pack:DataPack):void{
b = Number(pack.readObject());
s = Number(pack.readObject());
i = Number(pack.readObject());
l = Number(pack.readObject());
d = Number(pack.readObject());
bool = pack.readObject() as Boolean;
str = pack.readObject() as String;
so = pack.readObject() as TestVO;
list = pack.readObject() as Array ;
map = pack.readObject() as Map;
o = pack.readObject() as Object;
}
public function encode(pack:DataPack):void{
pack.writeObject(b, DataType.TYPE_BYTE);
pack.writeObject(s, DataType.TYPE_SHORT);
pack.writeObject(i, DataType.TYPE_INT);
pack.writeObject(l, DataType.TYPE_DOUBLE);
pack.writeObject(d, DataType.TYPE_DOUBLE);
pack.writeObject(bool, DataType.TYPE_BOOL);
pack.writeObject(str, DataType.TYPE_STRING);
pack.writeObject(so, DataType.TYPE_OBJECT);
pack.writeObject(list, DataType.TYPE_ARRAY, DataType.TYPE_OBJECT);
pack.writeObject(map, DataType.TYPE_MAP);
pack.writeObject(o, DataType.TYPE_OBJECT);
}
}
}
2.建立流对象管理器
package com.net.tcp
{
import com.commons.utils.ClassUtils;
import com.commons.utils.Map;
import com.net.test.TestVO;
/**
* 流对象管理器
*/
public class StreamObjectManager
{
/**
* 要加载的流对象
**/
private static var imports:Array = [TestVO];
/**
* 流对象Map[key=simpleName, value=class]
**/
private static var classes:Map = new Map();
public function StreamObjectManager()
{
}
/**
* 初始化流对象管理器
**/
public static function init():void{
classes.clear();
for each(var c:Class in imports){
classes.put(ClassUtils.getSimpleNameByObject(c), c);
}
}
public static function getClassByName(name:String):Class{
return classes.get(name);
}
public static function getObjectByClassName(classname:String):Object{
var c:Class = getClassByName(classname);
return new c();
}
}
}