1.修改Global.js文件
window.JubaPlatform = {
Browser : 'browser',
Wx : 'wx',
Qq : 'qq',
};
const platform = JubaPlatform.Qq; // 如果打包微信,則使用Wx
// 這里一系列操作是為了防止qqplay的命名沖突,qqplay已有window.Global變量.
let tmp = {
is_weixin_platform : platform == JubaPlatform.Wx,
is_qq_platform : platform == JubaPlatform.Qq,
platform : platform,
is_dev : false,
// 下面都是qq平臺使用到的變量
start_game_time : 0, // 上傳成績時(shí)使用, 注意在進(jìn)入game場景后重置
nickname : null,
logo_url : null,
game_name : '俄羅斯方塊',
}
if(window.Global == null) {
window.Global = {};
}
for(let i in tmp){
window.Global[i] = tmp[i];
}
2.修改Common.js文件
window.qqapi = require('Qqapi'); // 復(fù)制粘貼Qqapi.js
// 并在window.Common添加如下方法:
storage(key,data) { // 添加qq的存儲方法,qq的存儲方法十分不方便
if(Global.is_qq_platform){
let tmp = {};
tmp[this.KEY_MUSIC] = Global.is_music_on;
tmp[this.HAND_CONTROL] = Global.is_hand_control;
tmp[this.BTN_CONTROL] = Global.is_btn_control;
tmp[key] = data; // 保存?zhèn)€人數(shù)據(jù)
BK.QQ.saveGameData(tmp, function(errCode, cmd, data) {
BK.Script.log(1, 1, 'saveGameData : ' + errCode + ', ' + cmd + ', ' + JSON.stringify(data));
});
}
},
get_storage(key,_call) { // qq的獲取數(shù)據(jù)方法,只能在剛進(jìn)入游戲時(shí)調(diào)用一次,參見俄羅斯方塊.
if(Global.is_qq_platform){
let self = this;
BK.QQ.loadGameData(function(errCode, cmd, data) {
// 這里返回的 data,就是上面存儲游戲個(gè)人私有數(shù)據(jù)時(shí)候傳入的 data
if(Global.is_dev) BK.Script.log(1, 1, 'loadGameData : ' + errCode + ', ' + ', ' + JSON.stringify(data));
for(let i in data) {
if(self.events[i.toString()]){
self.events[i.toString()](data[i]);
}
}
});
}
},
login(_success,_fail,loading,hide_btns) {// 相應(yīng)的Home文件也要修改,使用Common.login();
switch (Global.platform) {
case JubaPlatform.Wx :
console.log('--------------common login wx ---------------------------');
wxapi.login(_success,_fail,hide_btns);
break;
case JubaPlatform.Qq :
console.log('--------------common login qq ---------------------------');
qqapi.login(_success,_fail,loading);
break;
case JubaPlatform.Browser:
_success();
break;
}
},
// 如果是對戰(zhàn)游戲 添加up_exp
// 如果是單機(jī)游戲 添加up_score , use_resurgence
- 修改Networker.js文件
// 在Networker里添加qqlogin和qq_network方法, 并在如下方法里進(jìn)行判斷
do_network(params) {
switch (Global.platform) {
case JubaPlatform.Wx:
this.wx_network(params);
break;
case JubaPlatform.Qq:
this.qq_network(params);
break;
}
},
// 在Networker里的base_request方法添加platform參數(shù)
let json = {
game_type : Global.game_type,
ver : Global.ver,
platform : Global.platform
};
let _req_data = json;
if(d.encrypt) { _req_data = {json:xxtea.encode(JSON.stringify(_req_data)),platform : Global.platform}}
// 同時(shí)去掉_req_data的JSON.stringify,在wx_network加上JSON.stringify
wx_network(params) {
wx.request({
url : params.url,
method : params.method,
data : JSON.stringify(params.data),
success : function (res) {
if(res && res.statusCode && res.statusCode == 200 && res.data && (res.data.isok == null || res.data.isok == true)) {
console.log("action : "+params.action,res);
if(params.success) params.success(res);
} else {
if(params.fail) params.fail();
}
},
fail : function () {
if(params.fail) params.fail();
}
});
}
// 添加獲取排行榜方法
get_rank(_success) {
this.base_request({
action : "get_rank",
data : {},
success : _success,
encrypt : false
});
},
4.修改Share.js文件. 如果有分享到群的判斷, 要區(qū)分平臺
share(title,image,query,success,fail,is_friend_battle) {
const params = {};
if(title) params.title = title;
if(image) params.imageUrl = image;
if(query) params.query = query;
if(success) params.success = success;
if(fail) params.fail = fail;
if(Global.is_weixin_platform) {
wx.aldShareAppMessage(params);
} else if(Global.is_qq_platform) {
// http://hudong.qq.com/docs/engine/userInfo/share/intro.html#1
// BK.QQ.shareToArk(0, title, image, true, query,success)
let shareInfo = {
summary:title, //QQ聊天消息標(biāo)題
picUrl:image, //QQ聊天消息圖片
extendInfo:query, //QQ聊天消息擴(kuò)展字段
// localPicPath:savedPath, //分享至空間、微信、朋友圈時(shí)需要的圖。(選填,若無該字段,系統(tǒng)使用游戲?qū)?yīng)的二維碼)
gameName:Global.game_name //游戲名,暫用與生成二維碼
};
if(Global.is_dev) console.log("qq share!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
if(Global.is_dev) console.log(JSON.stringify(shareInfo));
if(is_friend_battle) {
if(Global.is_dev) console.log("qq share is_friend_battle!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
// 這里的效果沒有官網(wǎng)說明的那樣, 可能還沒做好.
BK.QQ.shareToArk(0, title, image, true, query,function(errCode){
if(errCode == 0){
//分享成功
if(success) success();
}else{
//分享失敗
if(fail) fail();
}
});
} else{
if(Global.is_dev) console.log("qq share not is_friend_battle!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
BK.QQ.share(shareInfo, function (retCode, shareDest, isFirstShare) {
if(Global.is_dev) BK.Script.log(1, 1, "retCode:" + retCode + " shareDest:" + shareDest + " isFirstShare:" + isFirstShare);
if (retCode == 0) {
if (shareDest == 0 /* QQ */) {
//聊天窗
if(Global.is_dev) BK.Script.log(1, 1, "成功分享至QQ");
}
else if (shareDest == 1 /* QZone */) {
//空間
if(Global.is_dev) BK.Script.log(1, 1, "成功分享至空間");
}
else if (shareDest == 2 /* WX */) {
//微信
if(Global.is_dev) BK.Script.log(1, 1, "成功分享至微信");
}
else if (shareDest == 3 /* WXCircle */) {
// 朋友圈
if(Global.is_dev) BK.Script.log(1, 1, "成功分享至朋友圈");
}
if(success) success();
}
else if (retCode == 1) {
if(Global.is_dev) BK.Script.log(1, 1, "分享失敗" + retCode);
if(fail) fail();
}
else if (retCode == 2) {
if(Global.is_dev) BK.Script.log(1, 1, "分享失敗,用戶取消分享:" + retCode);
if(fail) fail();
}
});
}
}
},
// 獲取復(fù)活卡要判斷平臺
get_resurgence(key,_func,_fail_func) {
if(key == null || key == undefined || key == "")
return;
const _success = function (res) {
switch (Global.platform) {
case JubaPlatform.Wx :
if( res && res.data && res.data.resur ){
Global.resur_count = parseInt(res.data.resur);
Global.resur_limit = parseInt(res.data.r_limit);
if(_func)
_func();
}
break;
case JubaPlatform.Qq :
if( res && res.resur ){
Global.resur_count = parseInt(res.resur);
Global.resur_limit = parseInt(res.r_limit);
if(_func)
_func();
}
break;
}
};
Networker.resurgence(key,_success,_fail_func);
}
- 修改Home.js文件, 這里新增一個(gè)HomeModel.js文件, 參見elsfk
目前還沒有發(fā)現(xiàn)qq的群排行榜功能, 所以先隱藏掉