《怪兽必须死》游戏框架分析

一 游戏接入平台

二 游戏版本管理解决方案

三 通讯解决方案

四 其它工具类

五 源码下载

一 游戏接入平台

爱微游平台:http://play.11h5.com/game/?gameid=62&code=c-3b84ffb5e4a537303109245489db32fb

接入玩吧:http://qzs.qzone.qq.com/qzone/qzact/act/game/wanba/index.html

 

二 游戏版本管理解决方案

主要的需要版本号的文件

main.min.js

default.res.json

default.thm.json

main.min.js更新实现方案

默认写死main.js?v=20170214104539。

当加载超过5s,出现重载按钮,获取Date.now()作为版本号加载。

<script>
		function reload()
		{
			window["AWY_SDK"].setItem("gameVer", Date.now());
			location.reload();
		}
		function hideLoading()
		{
			var preloadDiv = document.getElementById("preloadDiv");
			preloadDiv.style.display = "none";
		}
		setTimeout(function()
		{
			var reloadBtn = document.getElementById("reloadBtn");
			reloadBtn.style.display = "block";
		}, 5000);
		var gameVer = window["AWY_SDK"].getItem("gameVer");
		if (gameVer)
		{
			window["AWY_SDK"].loadSingleScript("main.min.js?v=" + gameVer, function()
			{
				egret.runEgret();
			});
		}
		else
		{
			window["AWY_SDK"].loadSingleScript("main.min.js?v=20170214104539", function()
			{
				egret.runEgret();
			});
		}
    </script>
//加载单一script文件
sdk.loadSingleScript = function(src, callback) { var node = document.createElement("script"); node.src = src; if (node.hasOwnProperty("async")) { node.async = false } node.addEventListener("load", function() { this.removeEventListener("load", arguments.callee, false); if (callback) { callback() } }, false); document.body.appendChild(node) };

sdk.loadSingleScript("http://qzonestyle.gtimg.cn/open/mobile/h5gamesdk/build/sdk.js", callback);

default.res.json和default.thm.json更新实现方案

游戏内,使用window["game_version"]获取写死在index.html中的版本号

<script>var platform = "vutimes";</script>
<script>var engine_version = "3.2.3";</script>
<script>var game_version = "20170214104539"</script>
var e = "resource/default.res.json?v=" + ExternalUtil.inst.getVersion();
var e = "resource/default.thm.json?v=" + ExternalUtil.inst.getVersion();

default.res.json内资源,使用手写版本号...

三 通讯解决方案 

1 通讯工具类:NetService。游戏没有使用websocket,而是使用http进行服务端通讯。

2 http发送格式

GET数据格式:

url?cmd=xxx&token=xxx&date=Date.now()&拼接其它数据

POST数据格式:

post的data数据 request.data = "cmd=xxx&token=xxx&date=Date.now()&拼接其它数据"

3 http接收

loader.data = json格式

{

  diamond:xxx,

  spendDiaomon:xxxx

}

4 token。定义在AWY_SDK.js中,值从url上获取。

var sdk = window.AWY_SDK || {};

sdk.init = function() {
    sdk.token = sdk.getURLVar("token")
};

sdk.getURLVar = function(name) {
    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
    var r = window.location.search.substr(1).match(reg);
    return r != null ? unescape(r[2]) : null
};

如果有测试token,则使用测试的

NetService.inst.token = VUEngine.TEST_TOKEN ? VUEngine.TEST_TOKEN: ExternalUtil.inst.getToken();

  

四 其它工具类

TickerUtil              ?

StringUtils            字符串

ArmatureManager  骨骼

EventManager       事件管理, 继承EventDispatcher,写成了单例类

DisplayUtil            

PanelManager        弹框管理。

                           新建getDefinitionByName

                           弹框模态isModal

                           图层管理this._layerMap

CommandID          Control层,注册Command。用于处理http返回数据。

NetService            网络通讯层,http通讯,发送和处理接收数据

                           sendCallBack  发送并设置回调

                           sendNextRequest  序列发送,发送并接收处理数据后,再发送下一条

                           发送方式egret.URLLoader,egret.URLLoaderDataFormat.TEXT

                           发送格式:cmd + token + date  (token在游戏拼在游戏链接上)

                           返回格式:json的string

DefaultProcessing  数据发送等待,发送数据时显示,接收数据时隐藏。     

ExternalUtil           外部处理,断线刷新、重新登录等。主要是调用window的代码和设置index.html中变量。

UserProxy             用户数据

BigNum                 大数字处理

Dictionary              flash词典类

EffectUtils              特效类

ImageLoader          图片加载,有回调

GeomUtil                数学计算,距离之类

IncreaseUtils           技能增加显示

ItemUtil                  宝石、物品

LoaderUtils             异步加载,有回调

MathUtil                 数字处理

MovieClipUtils         影片剪辑

ObjectPool             对象池

RegUtils                正则

ShareUtil               分享,二维码,分享标题等

BasePanel             弹框基类

Alert                     提示框

AutoBitmap          图片加载

Broadcast             游戏广播

SimpleButton       简单按钮

VUEngine            游戏全部变量

DataConfig          存放json,接口getTableData从json中获取数据。 游戏的配置大多都放在data.json中。

Config                 配置信息

五 源码下载

怪兽必须死源码

原文地址:https://www.cnblogs.com/gamedaybyday/p/6405679.html