您的位置:首页 > 其它

PureMVC与DarkStar(SGS)通信之接收数据后的处理

2009-01-20 16:21 369 查看
最近准备用PureMVC+DarkStar做一个虚拟社区的游戏,做总感觉完全用PureMVC不太适合,所以对其进行了部分改造,不知道改造方案如何,还请大家多多指点。

今天改造的部分是Proxy,我做了一个专门用于接收和发送数据的类DSSocketProxy,MsgType是管理消息类型的,DSSocketProxy接收到消息后根据类型从MsgType中获取Proxy的NAME(例如LoginProxy)。那些要对接收消息进行处理的Proxy都实现了IMsgFactory接口。这样DSSocketProxy就可以通过Proxy名和实现的接口对消息进行派发。 类图如下:



部分代码如下:接收消息后的处理部分

try
{
var type:String = msgType.getType("0001");
var proxy:IMsgFactory = facade.retrieveProxy(type) as IMsgFactory;
if (null == proxy)
{
// 利用反射机制创建Proxy实例
type = "com.jacobi.model." + type;
var ClassReference:Class = getDefinitionByName(type) as Class;
var instance:Object = new ClassReference(null);

facade.registerProxy(instance as IProxy);
proxy = instance as IMsgFactory;
}
proxy.analyse("IMsgFactory 测试成功");
}
catch(e:Error)
{
trace(e.toString());
}


MsgType类:

package com.jacobi.sysinterface
{
import flash.utils.Dictionary;

public class MsgType
{
private static var instance:MsgType = null;		// 单例实例
private var types:Dictionary = null;			// 消息Hash表

public static function getInstance():MsgType
{
if (null == instance)
{
instance = new MsgType();
}
return instance;
}

/**
* 创建消息类型表
*
*/
public function initType():void
{
types = new Dictionary();

types["0001"] = "LoginProxy";
types["0002"] = "GetFriendsProxy";
}

/**
* 根据类型获取相应Proxy的NAME
* @param key 消息类型
* @return Proxy的NAME
*
*/
public function getType(key:String):String
{
return types[key];
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: