一 游戲接入平台
二 游戲版本管理解決方案
三 通訊解決方案
四 其它工具類
五 源碼下載
一 游戲接入平台
愛微游平台: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 配置信息
五 源碼下載