一 游戏接入平台
二 游戏版本管理解决方案
三 通讯解决方案
四 其它工具类
五 源码下载
一 游戏接入平台
爱微游平台: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 配置信息
五 源码下载