MOD_XXX_BASE类定义了XXX模块的静态常量和数据包的结构,MOD_XXX类注册了数据对象与处理函数的。class SuperSubBase的子类base,在不同的文件夹下data 、view、control都有base。class SuperBase的数据有var _superSubBaseList:Object;用来保存隶属于该类的子类实例。DataBase、ControllerBase、ViewBase继承自class SuperBase
,然后再有Data、Controller、View类。mvc是如何结合起来的呢?
protected function createObjectBase(_arg1:Class, _arg2:String, _arg3:View, _arg4:Controller, _arg5:Data):Object{
var _local6:String = this._nameHash[_arg2];
if (null == _local6){
_local6 = _arg2.replace(/^\[class /, "");
_local6 = (_local6.substring(0, 1).toLowerCase() + _local6.substring(1));
this._nameHash[_arg2] = _local6;
};
if (null == this._superSubBaseList[_local6]){
this._superSubBaseList[_local6] = new (_arg1)();
(this._superSubBaseList[_local6] as SuperSubBase).settle(_local6, _arg3, _arg4, _arg5, this);
};
return (this._superSubBaseList[_local6]);
}
该函数位于 class SuperBase中,在类中添加类对象,以便集中管理。
public class Base extends SuperSubBase {
protected var _instanceName:String;
protected var _data:Data;
protected var _ctrl:Controller;
protected var _loaded:Boolean = false;
override public function settle(_arg1:String, _arg2:View, _arg3:Controller, _arg4:Data, _arg5:SuperBase):void{
if (null == this._data){
this._instanceName = _arg1;
this._data = _arg4;
if (this._data != _arg5){
throw (new Error(inheritError()));
};
this._ctrl = this._ctrl;
};
}
public function destroy():void{
this._data.destroyObject(this._instanceName);
}
}
//class DataBase extends SuperBase
protected function createObject(_arg1:Class, _arg2:String=""):Object{
_arg2 = (_arg1 + "");
_arg2 = _arg2.replace(/Data\]$/, "");
return (createObjectBase(_arg1, _arg2, this._view, this._ctrl, (this as Data)));
}
//class Data中建立各种数据对象。
public function get player():PlayerData{
return ((createObject(PlayerData) as PlayerData));
}
public class DataBase extends SuperBase {
protected var _ctrl:Controller;
protected var _view:View;
protected var _notAllowList:Object;
protected var _sock:Socket;
private var _host:String;
private var _port:int;
private var _useProxy:Boolean = false;
protected var _onConnect:Function;
protected var _onClose:Function;
private var connectSucceed:Boolean = false;
private var pack_len:int = -1;
private var buffer:ByteArray;
private var _event:EventDispatcher;
private var _eventList:Object;
每个database对应一个socket。