CocosCreator构建H5(web-mobile)的包后,在发布目录下找到index.html修改一下里面的js代码,如下。
<script type="text/javascript">
function GetMainUrl(){
var url=document.URL
if(url.indexOf("?")!=-1){
url=url.split("?")[0];
}
return url;
}
function GetRequest() {
var url = location.search; //获取url中包含"?"符以及其后的字串
console.log("getRequest:"+url);
var theRequest = new Object();
if (url.indexOf("?") != -1) {
var str = url.substr(1);
strs = str.split("&");
for(var i = 0; i < strs.length; i ++) {
theRequest[strs[i].split("=")[0]]=unescape(strs[i].split("=")[1]);
}
}
else
{
return "";
}
return theRequest;
}
</script>
<script type="text/javascript">
(
function () {
localStorage.setItem("mainURL",GetMainUrl());
var url=document.URL;
console.log("url:"+url);
//var url2=decodeURI(url);
//console.log("url2:"+url2);
var url2=GetRequest();
if(url2!="")
{
console.log("url2"+url2);
console.log("url2.diy"+ url2.diy);
localStorage.setItem("diy",1);
localStorage.setItem("diyJson",url2.diy);
}
else
{
console.log("无透传参数");
localStorage.setItem("diy",0)
}
// open web debugger console
if (typeof VConsole !== 'undefined') {
window.vConsole = new VConsole();
}
var splash = document.getElementById('splash');
splash.style.display = 'block';
var cocos2d = document.createElement('script');
cocos2d.async = true;
cocos2d.src = window._CCSettings.debug ? 'cocos2d-js.js' : 'cocos2d-js-min.js';
var engineLoaded = function () {
document.body.removeChild(cocos2d);
cocos2d.removeEventListener('load', engineLoaded, false);
window.boot();
};
cocos2d.addEventListener('load', engineLoaded, false);
document.body.appendChild(cocos2d);
}
)();
</script>
核心思想就是判断url是否传参。
若传参的话,localStorage设置diy标识为1,同时设置diyJson标识为具体参数。否则设置diy标识为0。
进入游戏主逻辑后,通过判断diy标识,来选择不同的游戏逻辑。比如我们游戏中若diy标识为0则进入主界面。diy标识为1,则直接进入战斗界面,并根据diyJson数据来设置战斗场景。