达达麻将客户端初始化流程
达达麻将版图
客户端代码结构
1: scripts文件夹下:
(1) 3rdparty: 第三方代码 socket-io;
(2) Comonents: 游戏中挂到节点上的组件;
(3)全局对象:在代码的根目录下;
loading场景
1: Loading Scene 挂载了脚本: LoadingLogic.js
2: 加载场景初始化过程:
(1): 初始化全局的管理对象,全部记录到 cc.vv这个表里面, 特点: cc.vv.userMgr = new UserMgr() 对象实例是小写开头,代码是大写开头,全局唯一只有一个; initMgr: UserMgr, ReplayMgr, HTTP, Global, Net, GameNetMgr, AnysdkMgr, VoiceMgr, AudioMgr, Utils, 解析url的参数,来决定不同的用户账号
(2)显示几秒的开机画面;
showSplash:function(callback){
(3)检查更新;
this.getServerInfo();
(4)startPreloading: 预加载资源 resources/textures;
(5)加载完成后,进入”login”场景;
注意:官方开源的最新版本,和泄露版本达达麻将(早期版本)相比是有做升级更新的。如下图:1是最新开源,2是早期版本。
在1中:打开游戏,第一个UI界面是start:绑定的脚本是AppStart.js
在2中:打开游戏,第一个UI界面是loading;绑定的JS脚本是LoadingLogic.js
//------------AppStart.js------------
function urlParse(){
var params = {};
if(window.location == null){
return params;
}
var name,value;
var str=window.location.href; //取得整个地址栏
var num=str.indexOf("?")
str=str.substr(num+1); //取得所有参数 stringvar.substr(start [, length ]
var arr=str.split("&"); //各个参数放到数组里
for(var i=0;i < arr.length;i++){
num=arr[i].indexOf("=");
if(num>0){
name=arr[i].substring(0,num);
value=arr[i].substr(num+1);
params[name]=value;
}
}
return params;
}
function initMgr(){
cc.vv = {};
var UserMgr = require("UserMgr");
cc.vv.userMgr = new UserMgr();
var ReplayMgr = require("ReplayMgr");
cc.vv.replayMgr = new ReplayMgr();
cc.vv.http = require("HTTP");
cc.vv.global = require("Global");
cc.vv.net = require("Net");
var GameNetMgr = require("GameNetMgr");
cc.vv.gameNetMgr = new GameNetMgr();
cc.vv.gameNetMgr.initHandlers();
var AnysdkMgr = require("AnysdkMgr");
cc.vv.anysdkMgr = new AnysdkMgr();
cc.vv.anysdkMgr.init();
var VoiceMgr = require("VoiceMgr");
cc.vv.voiceMgr = new VoiceMgr();
cc.vv.voiceMgr.init();
var AudioMgr = require("AudioMgr");
cc.vv.audioMgr = new AudioMgr();
cc.vv.audioMgr.init();
var Utils = require("Utils");
cc.vv.utils = new Utils();
//var MJUtil = require("MJUtil");
//cc.vv.mjutil &