- BK.QQ 房间手Q消息管理类
- 方法
- notifyHideGame()
- notifyCloseGame()
- notifyReadyGame()
- notifyGameTipsWaiting()
- notifyGameTipsSomeOneJoinRoom(nick)
- notifyGameTipsSomeOneLeaveRoom(nick)
- notifyGameTipsPlaying()
- notifyGameTipsGameOver()
- inviteFriend(wording)
- checkPubAccountState(puin,callback)
- enterPubAccountCard(puin)
- reqCustomLogic(data,callback)
- uploadData(actionName,enter,result,param1,param2,pram3)
- getGameItemList(callback)
- getUserGameItems(callback)
- getRoomUserScoreInfo(roomId,callback)
- scoreUpload(scoreData,callback,arkData)
- shareToMQQ(title, summary, detailUrl, picUrl)
- getCmshowDressInfo(openId,callback)
- getUserCurrencyInfo(currencyType,callback)
- listenGameEventEnterBackground
- listenGameEventEnterForeground
- listenGameEventMaximize
- listenGameEventMinimize
- 方法
- rollbackGameItems(itemlist,callback)
- fetchOpenKey(callback)
BK.QQ 房间手Q消息管理类
本类用于与手q进行消息交换调用前请主动加载
方法
notifyHideGame()
通知手q,用户点击了缩小按钮
参数:无返回值:无
notifyCloseGame()
通知手q,用户点击了关闭按钮
参数:无返回值:无
notifyReadyGame()
通知手q,游戏即将开始
参数:无返回值:无
notifyGameTipsWaiting()
通知手q,等待玩家加入
参数:无返回值:无
notifyGameTipsSomeOneJoinRoom(nick)
通知手q,新玩家加入房间
参数:
参数 | 类型 | 名称 | 备注 |
---|---|---|---|
nick | string | 昵称 |
返回值:无
notifyGameTipsSomeOneLeaveRoom(nick)
通知手q,玩家离开房间
参数:
参数 | 类型 | 名称 | 备注 |
---|---|---|---|
nick | string | 昵称 |
返回值:无
notifyGameTipsPlaying()
通知手q,游戏进行中
参数:无返回值:无
notifyGameTipsGameOver()
通知手q,游戏已结束
参数:无返回值:无
inviteFriend(wording)
邀请好友加入游戏。支持手q/微信
参数:
参数 | 类型 | 名称 | 备注 |
---|---|---|---|
wording | string | 文案 |
返回值:无
checkPubAccountState(puin,callback)
查询是否关注公众号
参数:
参数 | 类型 | 名称 | 备注 |
---|---|---|---|
puin | string | 公众号id | |
callback | function | 回调函数 |
返回值:无
例子
BK.QQ.checkPubAccountState(pubAccountId ,function(errCode, cmd, data) {
BK.Script.log(0,0," callback errCode = "+errCode+ " cmd = "+ cmd + " data = "+ data);
if(data.is_follow == 1){ //1已关注 0未关注
}
});
enterPubAccountCard(puin)
进入公众号资料卡
参数:
参数 | 类型 | 名称 | 备注 |
---|---|---|---|
puin | string | 公众号id |
返回值:无
reqCustomLogic(data,callback)
开放api
参数:
参数 | 类型 | 名称 | 备注 |
---|---|---|---|
data | json | 用户数据 | |
callback | function | 回调函数 |
返回值:无
例子
BK.Script.loadlib('GameRes://qqPlayCore.js');
var data ={"gameid":2003, "data" : {"cmd" : "addex", "itemid" : 2025, "num" : 4}};
BK.QQ.reqCustomLogic(data,function(errCode,cmd,data)
{
BK.Script.log(0, 0, "BK.QQ.reqCustomLogic errCode = " + errCode + " cmd = " + cmd + " data = " + JSON.stringify(data));
})
uploadData(actionName,enter,result,param1,param2,pram3)
数据上报
参数:
参数 | 类型 | 名称 | 备注 |
---|---|---|---|
action | string | 操作id,用来定义操作 | |
enter | number | 定义操作场景 | |
result | number | 定义操作结果 | |
param1 | string | 拓展字段 | |
param2 | string | 拓展字段 | |
param2 | string | 拓展字段 |
返回值:无
例子:
BK.Script.loadlib("GameRes://qqPlayCore.js")
var actionName = "actionname"
var enter = 1;
var result = 1;
var param1 = "param111"
var param2 = "param222"
var param3 = "param333"
BK.QQ.uploadData(actionName,enter,result,param1,param2,param3);
getGameItemList(callback)
获取游戏所有道具
参数:
参数 | 类型 | 名称 | 备注 |
---|---|---|---|
callback | Function | 回调函数 |
返回值:无
例子:
BK.QQ.getGameItemList(function(errCode,cmd,data){
BK.Script.log(0,0," reveive sso cmd = "+ cmd)
var itemList = [];
if(data){
if(data.data){
if(data.data.itemList){
data.data.itemList.forEach(function(element) {
var item = {
"id":element.id, //道具ID
"name":element.name, //道具名称
"consumed":element.consumed, //是否消耗型【0-非消耗型 1-消耗型】
"uinque":element.uinque, //是否绝版【0-非绝版,1-绝版】
"iconUrl":element.iconUrl, //素材iconurl
"curreInfo":element.curreInfo //价格数组 因支持多货币,每个元素为某种货币的价格
// "curreInfo":[
// {
// "curreType":3, //3-游戏点券 4-二级货币(暂不能用)
// "price":1000 //价格
// }]
}
itemList.push(item);
BK.Script.log(0,0,"id ="+ item.id + " name="+item.name+ " consumed="+item.consumed+" unique="+item.uinque+ " iconUrl="+item.iconUrl + " curreInfo="+item.curreInfo) ;
}, this);
}
}
}
})
getUserGameItems(callback)
获取当前用户拥有的游戏道具
参数:
参数 | 类型 | 名称 | 备注 |
---|---|---|---|
callback | Function | 回调函数 |
返回值:无
例子:
BK.QQ.getUserGameItems(function(errCode,cmd,data){
BK.Script.log(0,0," reveive sso cmd = "+ cmd)
var itemList = [];
if(data){
if(data.data){
if(data.data.itemList){
data.data.itemList.forEach(function(element) {
var item = {
"consumed": element.consumed, //是否消耗型 【0-非消耗型 1-消耗型】
"iconUrl": element.iconUrl, //素材iconurl
"id": element.id, //道具ID
"name": element.name, //道具名称
"num": element.num //活动获得道具数
}
itemList.push(item);
BK.Script.log(0,0,"consumed="+ item.consumed + " iconUrl="+item.iconUrl + " id="+item.id + " name="+item.name + " num="+item.num) ;
}, this);
}
}
}
});
getRoomUserScoreInfo(roomId,callback)
获取房间内的用户成绩数据
参数:
参数 | 类型 | 名称 | 备注 |
---|---|---|---|
roomId | number | 房间id | |
callback | Function | 回调函数 |
返回值:无
例子:
var roomId = 123; //房间ID
BK.QQ.getRoomUserScoreInfo(data,function(errCode,cmd,data){
if(data.data){
var userRank = data.data.userRank;
for (var idx = 0; idx < userRank.length; idx++) {
var singleUserRank = userRank[idx];
var openId = singleUserRank.openId;
var score = singleUserRank.score;
var rank = singleUserRank.rank;
//可选
// var a1 = singleUserRank.a1;
// var a2 = singleUserRank.a2;
// ...
//
}
}
});
scoreUpload(scoreData,callback,arkData)
成绩上报使用场景:玩家中途退出游戏,玩家最终完成游戏,均需要主动上报成绩。
参数:
参数 | 类型 | 名称 | 备注 |
---|---|---|---|
scoreData | Object | 请求参数 | 具体属性如下例子 |
callback | Function | 回调函数 | 具体错误码可在 10.20.1 错误码一节查看 |
arkData | Object | ark控制参数 | 手Q 7.3.5新增支持定制化结果气泡界面。如不需要定制,填null/undefined |
返回值:无
例子:
var scoreData = [
{
//第一个用户的得分
"openId":"4558665DATRGFGFS455",
"scoreInfo":{
"score":4455, //用户得分 必须上报
//附加参数,上报和使用都由第三方决定,最多支持5个附加参数,可选
"a1":1,
"a2":2,
},
"actInfo":{ //活动数据由第三方配置定义,key值统一用p1,p2,...此数据只用于活动,不会保存到用户的房间数据里, 现支持最多支持16个
"p1":1, //参数0
"p2":5, //参数1
},
},
{
//第二个用户的得分
"openId":"SDJIIWJIEQWJ232389DA",
"scoreInfo":{
"score":4455, //用户得分 必须上报
//附加参数,上报和使用都由第三方决定,最多支持5个附加参数,可选
"a1":1,
"a2":2,
},
"actInfo":{ //活动数据由第三方配置定义,key值统一用p1,p2,...此数据只用于活动,不会保存到用户的房间数据里, 现支持最多支持16个
"p1":1, //参数0
"p2":5, //参数1
},
}
//第n个用户的得分 ...
];
//735新加,支持各模式玩游戏
var arkData = {
/**模式一**/
"pkMode":1, //pk模式 1-PVP 2-PVE
"wording":"胜利", //结果展示wording
"groupInfo":
[
{
"rank":1, //组排名,如有并列第一的则两组的rank都是1
"openIds":["4558665DATRGFGFS455","SDJIIWJIEQWJ232389DA"], //组成员openId
"grpWording": //组 wording,可选
[
["得分","123","分" ],
["用时","123","秒" ],
["杀怪","123" ],
]
}
]
}
BK.QQ.scoreUpload(scoreData,function(err,cmd,data){
//errCode ,0表示成功其他为异常
//data = {}
},arkData);
shareToMQQ(title, summary, detailUrl, picUrl)
分享游戏至手Q需要注意的是,此函数并非邀请好友进入游戏,仅是将游戏detailUrl分享出来。其中detailUrl需游戏方自己提供,建议是该款游戏的介绍页
参数:
参数 | 类型 | 名称 | 备注 |
---|---|---|---|
title | string | 标题 | |
summary | string | 分享内容 | |
detailUrl | string | 跳转详情url | 游戏方提供 |
picUrl | string | 图片url | 游戏方提供 |
返回值:无
以迪斯尼过马路中的分享为例,具体参数对应的显示如下,点击后,将跳转至 detailUrl对应的地址
例子:
BK.QQ.shareToMQQ("迪斯尼过马路战绩","我获得了第1名,快来挑战我","www.xxx.com","xxx.com/xx.png");
getCmshowDressInfo(openId,callback)
获取厘米秀形象数据
参数:
参数 | 类型 | 名称 | 备注 |
---|---|---|---|
openId | string | 待获取人的openid |
返回值:无
例子:
//根据openId 获取厘米秀装扮
BK.QQ.getCmshowDressInfo(GameStatusInfo.openId,function(errCode,cmd,data){
BK.Script.log(0,0,"cmd = "+ cmd + " data = " + data);
if(errCode == 0){
var jPath = BK.Script.pathForResource(data.skltPath.atlas, 'json');
var aPath = BK.Script.pathForResource(data.skltPath.json, 'atlas');
var ani =new BK.SkeletonAnimation(aPath, jPath, 1,null,null,null );
for (var i=0;i<data.dressPath.length;i++)
{
var j = data.dressPath[i].atlas;
var a = data.dressPath[i].atlas;
var jPath = BK.Script.pathForResource(j, 'json');
var aPath = BK.Script.pathForResource(a, 'atlas');
ani.setAccessory(jPath, aPath);
}
ani.position = {x:100,y:100};
BK.Director.root.addChild(ani);
}
});
getUserCurrencyInfo(currencyType,callback)
查询用户货币余额
参数:
参数 | 类型 | 名称 | 备注 |
---|---|---|---|
currencyType | number | 货币类型 | 1- 请求获取游戏点券 2-请求获取游戏二级货币(暂不可用) |
callback | Function | 回调 | 具体参数如下例子 |
例子:
BK.QQ.getUserCurrencyInfo(1,function(errCode,cmd,data){
if(errCode == 0){
for(var i = 0 ; i < data.data.curreInfo.length; i++){
var curr = data.data.curreInfo[i];
var type = curr.curreType //3- 游戏点券 目前只有一个3值
var bal = curr.balance //用户拥有的该货币数量
}
}
});
listenGameEventEnterBackground
监听游戏退到后台事件手Q进入后台后回调,如按home键退到后台
参数:
参数 | 类型 | 名称 | 备注 |
---|---|---|---|
obj | object | 事件绑定的对象 | |
callback | Function | 回调 | 具体参数如下例子 |
例子:
var obj = {};
BK.QQ.listenGameEventEnterBackground(obj,function(){
//
})
listenGameEventEnterForeground
监听游戏回到前台
参数:
参数 | 类型 | 名称 | 备注 |
---|---|---|---|
obj | object | 事件绑定的对象 | |
callback | Function | 回调 | 具体参数如下例子 |
例子:
var obj = {};
BK.QQ.listenGameEventEnterForeground(obj,function(){
//
})
listenGameEventMaximize
监听游戏界面最大化场景:用户缩小游戏后,再次点游戏栏回到游戏
参数:
参数 | 类型 | 名称 | 备注 |
---|---|---|---|
obj | object | 事件绑定的对象 | |
callback | Function | 回调 | 具体参数如下例子 |
例子:
var obj = {};
BK.QQ.listenGameEventMaximize(obj,function(){
//
})
listenGameEventMinimize
监听游戏界面最小化场景:用户点击缩小游戏
参数:
参数 | 类型 | 名称 | 备注 |
---|---|---|---|
obj | object | 事件绑定的对象 | |
callback | Function | 回调 | 具体参数如下例子 |
例子:
var obj = {};
BK.QQ.listenGameEventMinimize(obj,function(){
//
})
sendGameMsg()
开放api注意用法:使用前提是游戏不需要在加入房间时自动发消息,需要在特定逻辑中单独调用发消息的场景。此函数是用于在加入房间后,发出游戏消息。发出的是有状态的消息,其他玩家点击消息可以进入发消息的这个房间中一起游戏。并且与queryAndJoinRoom接口的发消息是不能同时调用的。
参数:
参数 | 类型 | 名称 | 备注 |
---|---|---|---|
返回值:无
例子
//加入房间成功后
BK.QQ.SendGameMsg()
BK.QQ.shareToArk(roomId, summary, picUrl, isSelectFriend, extendInfo)
分享带自定义数据以及图片的消息气泡至聊天窗其他用户点击此消息气泡后,带上自定义的消息启动游戏。
参数说明:
参数 | 类型 | 名称 | 备注 |
---|---|---|---|
roomId | number | 房间id | 如使用BK.Room房间逻辑,可填入对应roomId,如开发者自建房间,填0 |
summary | string | 分享wording | |
picUrl | string | 图片的网络链接 | |
isSelectFriend | boolean | 选择好友 | 为true则跳出选择好友的列表 |
extendInfo | string | 扩展信息 | 开发者可自定义该信息,用与传输参数 |
例子:
BK.QQ.shareToArk(0, 'wording', 'http://i.hudongcdn.com/8b4e1c52e5a1b88b42ae510d4a17187c2003_20180326.png', true, 'extendInfo');
BK.QQ.shareToArkFromFile(roomId, summary, extendInfo, path)
分享将本地径下的图片以及自定义数据图片的消息气泡至聊天窗与BK.QQ.shareToArk相似,与其不同的是本接口分享的图片来自游戏本地路径需要引用qqPlayCore.js
参数说明:
参数 | 类型 | 名称 | 备注 |
---|---|---|---|
roomId | number | 房间id | |
summary | string | 分享wording | |
extendInfo | string | 扩展信息 | 开发者可自定义该信息,用与传输参数 |
path | string | 图片的本地路径 |
例子:
BK.QQ.shareToArkFromFile(1, 'wording', 'extendInfo', 'GameRes://resource/texture/test.png');
BK.QQ.shareToArkFromBuff(roomId, summary, extendInfo, buff)
将BK.Buffer中的图片内容分享至聊天窗 与BK.QQ.shareToArk相似,与其不同的是本接口分享的图片来自图片装有图片数据的BK.Buffer对象需要引用qqPlayCore.js
参数说明:
参数 | 类型 | 名称 | 备注 |
---|---|---|---|
roomId | number | 房间id | |
summary | string | 分享wording | |
extendInfo | string | 扩展信息 | |
buff | object | BK.Buffer对象 |
例子:
var buff = BK.FileUtil.readFile("GameRes://resource/texture/monster.png");
BK.QQ.shareToArkFromBuff(1, 'wording', 'extendInfo', buff);
BK.QQ.shareToArkFromNode(roomId, summary, extendInfo, node)
将某个节点进行截屏后,分享至聊天窗与BK.QQ.shareToArk相似,与其不同的是本接口分享的图片来自如渲染树的某个节点需要引用qqPlayCore.js
参数说明:
参数 | 类型 | 名称 | 备注 |
---|---|---|---|
roomId | number | 房间id | |
summary | string | 分享wording | |
extendInfo | string | 扩展信息 | |
node | object | BK.Node对象 |
例子:
// 先在屏幕上添加Node并确保待上传的Node已完成渲染
var tex = new BK.Texture('GameRes://resource/texture/test.png');
var node = new BK.Sprite(500, 500, tex, 0, 1, 1, 1);
BK.Director.root.addChild(node);
......
BK.QQ.shareToArkFromNode(1, 'wording', 'extendInfo', node);
注意:如果使用BK.Room则需要填roomId。如果自建房间体系则填0。
consumeItems(itemlist,callback)
开放api分享无状态ark消息
参数:
参数 | 类型 | 名称 | 备注 |
---|---|---|---|
itemlist | Array | 消耗的道具数组 | |
callback | function | 回调 |
返回值:无
例子
var itemlist = [
{
"id":1, //道具id
"num":1, //数量
"seq":"12312"//用于标识当前消耗的序列号。开发者可自定义
},
{
"id":2, //道具id
"num":1, //数量
"seq":"12312"//用于标识当前消耗的序列号。开发者可自定义
}
]
BK.QQ.consumeItems(itemlist,function(errCode,succList,failList){
if (errCode == 0) {
for(var i = 0 ; i<succList.length; i++ ){
//消耗成功的item
var succItemInfo = succList[i];
var id = succItemInfo.id; //道具ID
}
for(var i = 0 ; i<failList.length; i++ ){
//消耗失败的item
var faldItemInfo = failList[i];
var ret = faldItemInfo.ret; //失败返回码
var id = faldItemInfo.id; //道具ID
}
}
})
rollbackGameItems(itemlist,callback)
道具回滚当因网络、游戏逻辑需要等原因需要将已消耗的道具进行回滚,恢复到未消耗状态,可以使用本接口。用法:传入对应消耗的道具id消耗时对应的流水号seq,即可回滚某次消耗
参数:
参数 | 类型 | 名称 | 备注 |
---|---|---|---|
itemlist | Array | 消耗的道具数组 | |
callback | function | 回调 |
返回值:无
例子:
var itemlist = [
{
"id":1, //道具id
"num":1, //数量
"seq":"12312"//消耗的流水号
},
{
"id":2, //道具id
"num":1, //数量
"seq":"12312"//消耗的流水号
}
]
BK.QQ.rollbackGameItems(itemlist,function(errCode,succList,failList){
if (errCode == 0) {
for(var i = 0 ; i<succList.length; i++ ){
//回滚成功的itemid
var succItemInfo = succList[i];
var id = succItemInfo.id; //道具ID
}
for(var i = 0 ; i<failList.length; i++ ){
//回滚失败的item
var faldItemInfo = failList[i];
var ret = faldItemInfo.ret; //失败返回码
var id = faldItemInfo.id; //道具ID
}
}
})
fetchOpenKey(callback)
获取openKey获取用户开发者自建后台与QQ轻游戏后台鉴权的密钥openKey
参数:
参数 | 类型 | 名称 | 备注 |
---|---|---|---|
callback | function | 回调 |
返回值:无
例子:
BK.QQ.fetchOpenKey(function (errCode, cmd, data) {
if (errCode == 0) {
var openKey = data.openKey;
}
});
getRankList(callback)
获取排行榜
参数:
参数 | 类型 | 名称 | 备注 |
---|---|---|---|
callback | function | 回调 |
返回值:无
例子:
BK.QQ.getRankList(function (errCode, cmd, data) {
BK.Script.log(1, 1, "getRankList demo callback cmd" + cmd + " errCode:" + errCode + " data:" + JSON.stringify(data));
if(data)
{
var rankList = data.data.rankList;
for(var i=0;i<rankList.length;i++){
var rankNode = rankList[i];
BK.Script.log(1, 1, "rankList i:" + i +
" nick:" + rankNode.nick + //昵称
" head:" + rankNode.head + //头像url
" accPoint:"+rankNode.busData.accPoint) //积分
}
}
});
skipGame(desGameId, extendInfo)
跳转至其他游戏
参数:
参数 | 类型 | 名称 | 备注 |
---|---|---|---|
desGameId | number | 跳转的游戏id | |
extendInfo | string | 额外参数,必须为字符串 |
返回值:无
例子:
var desGameId = 1234; //跳转的gameid,必须为数字
var extendInfo = ""; //额外参数,必须为字符串
BK.QQ.skipGame(desGameId, extendInfo)
createShortCut(extendInfo)
Andriod下 发送游戏快捷方式到桌面。iOS不支持
参数:
参数 | 类型 | 名称 | 备注 |
---|---|---|---|
extendInfo | string | 额外参数,必须为字符串 |
返回值:无
例子:
var extendInfo = ""; //额外参数,必须为字符串
BK.QQ.createShortCut(extendInfo)