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 回调函数

返回值:无

例子

  1. BK.QQ.checkPubAccountState(pubAccountId ,function(errCode, cmd, data) {
  2. BK.Script.log(0,0," callback errCode = "+errCode+ " cmd = "+ cmd + " data = "+ data);
  3. if(data.is_follow == 1){ //1已关注 0未关注
  4. }
  5. });

enterPubAccountCard(puin)

进入公众号资料卡

参数:

参数 类型 名称 备注
puin string 公众号id

返回值:无

reqCustomLogic(data,callback)

开放api

参数:

参数 类型 名称 备注
data json 用户数据
callback function 回调函数

返回值:无

例子

  1. BK.Script.loadlib('GameRes://qqPlayCore.js');
  2. var data ={"gameid":2003, "data" : {"cmd" : "addex", "itemid" : 2025, "num" : 4}};
  3. BK.QQ.reqCustomLogic(data,function(errCode,cmd,data)
  4. {
  5. BK.Script.log(0, 0, "BK.QQ.reqCustomLogic errCode = " + errCode + " cmd = " + cmd + " data = " + JSON.stringify(data));
  6. })

uploadData(actionName,enter,result,param1,param2,pram3)

数据上报

参数:

参数 类型 名称 备注
action string 操作id,用来定义操作
enter number 定义操作场景
result number 定义操作结果
param1 string 拓展字段
param2 string 拓展字段
param2 string 拓展字段

返回值:无

例子:

  1. BK.Script.loadlib("GameRes://qqPlayCore.js")
  2. var actionName = "actionname"
  3. var enter = 1;
  4. var result = 1;
  5. var param1 = "param111"
  6. var param2 = "param222"
  7. var param3 = "param333"
  8. BK.QQ.uploadData(actionName,enter,result,param1,param2,param3);

getGameItemList(callback)

获取游戏所有道具

参数:

参数 类型 名称 备注
callback Function 回调函数

返回值:无

例子:

  1. BK.QQ.getGameItemList(function(errCode,cmd,data){
  2. BK.Script.log(0,0," reveive sso cmd = "+ cmd)
  3. var itemList = [];
  4. if(data){
  5. if(data.data){
  6. if(data.data.itemList){
  7. data.data.itemList.forEach(function(element) {
  8. var item = {
  9. "id":element.id, //道具ID
  10. "name":element.name, //道具名称
  11. "consumed":element.consumed, //是否消耗型【0-非消耗型 1-消耗型】
  12. "uinque":element.uinque, //是否绝版【0-非绝版,1-绝版】
  13. "iconUrl":element.iconUrl, //素材iconurl
  14. "curreInfo":element.curreInfo //价格数组 因支持多货币,每个元素为某种货币的价格
  15. // "curreInfo":[
  16. // {
  17. // "curreType":3, //3-游戏点券 4-二级货币(暂不能用)
  18. // "price":1000 //价格
  19. // }]
  20. }
  21. itemList.push(item);
  22. BK.Script.log(0,0,"id ="+ item.id + " name="+item.name+ " consumed="+item.consumed+" unique="+item.uinque+ " iconUrl="+item.iconUrl + " curreInfo="+item.curreInfo) ;
  23. }, this);
  24. }
  25. }
  26. }
  27. })

getUserGameItems(callback)

获取当前用户拥有的游戏道具

参数:

参数 类型 名称 备注
callback Function 回调函数

返回值:无

例子:

  1. BK.QQ.getUserGameItems(function(errCode,cmd,data){
  2. BK.Script.log(0,0," reveive sso cmd = "+ cmd)
  3. var itemList = [];
  4. if(data){
  5. if(data.data){
  6. if(data.data.itemList){
  7. data.data.itemList.forEach(function(element) {
  8. var item = {
  9. "consumed": element.consumed, //是否消耗型 【0-非消耗型 1-消耗型】
  10. "iconUrl": element.iconUrl, //素材iconurl
  11. "id": element.id, //道具ID
  12. "name": element.name, //道具名称
  13. "num": element.num //活动获得道具数
  14. }
  15. itemList.push(item);
  16. BK.Script.log(0,0,"consumed="+ item.consumed + " iconUrl="+item.iconUrl + " id="+item.id + " name="+item.name + " num="+item.num) ;
  17. }, this);
  18. }
  19. }
  20. }
  21. });

getRoomUserScoreInfo(roomId,callback)

获取房间内的用户成绩数据

参数:

参数 类型 名称 备注
roomId number 房间id
callback Function 回调函数

返回值:无

例子:

  1. var roomId = 123; //房间ID
  2. BK.QQ.getRoomUserScoreInfo(data,function(errCode,cmd,data){
  3. if(data.data){
  4. var userRank = data.data.userRank;
  5. for (var idx = 0; idx < userRank.length; idx++) {
  6. var singleUserRank = userRank[idx];
  7. var openId = singleUserRank.openId;
  8. var score = singleUserRank.score;
  9. var rank = singleUserRank.rank;
  10. //可选
  11. // var a1 = singleUserRank.a1;
  12. // var a2 = singleUserRank.a2;
  13. // ...
  14. //
  15. }
  16. }
  17. });

scoreUpload(scoreData,callback,arkData)

成绩上报使用场景:玩家中途退出游戏,玩家最终完成游戏,均需要主动上报成绩。

参数:

参数 类型 名称 备注
scoreData Object 请求参数 具体属性如下例子
callback Function 回调函数 具体错误码可在 10.20.1 错误码一节查看
arkData Object ark控制参数 手Q 7.3.5新增支持定制化结果气泡界面。如不需要定制,填null/undefined

返回值:无

例子:

  1. var scoreData = [
  2.    {
  3. //第一个用户的得分
  4.    "openId":"4558665DATRGFGFS455",
  5.    "scoreInfo":{
  6. "score":4455, //用户得分 必须上报
  7. //附加参数,上报和使用都由第三方决定,最多支持5个附加参数,可选
  8. "a1":1,
  9. "a2":2,
  10.    },
  11.    "actInfo":{ //活动数据由第三方配置定义,key值统一用p1,p2,...此数据只用于活动,不会保存到用户的房间数据里, 现支持最多支持16个
  12.    "p1":1, //参数0
  13.    "p2":5, //参数1
  14.    },
  15.    },
  16. {
  17. //第二个用户的得分
  18.    "openId":"SDJIIWJIEQWJ232389DA",
  19.    "scoreInfo":{
  20. "score":4455, //用户得分 必须上报
  21. //附加参数,上报和使用都由第三方决定,最多支持5个附加参数,可选
  22. "a1":1,
  23. "a2":2,
  24.    },
  25.    "actInfo":{ //活动数据由第三方配置定义,key值统一用p1,p2,...此数据只用于活动,不会保存到用户的房间数据里, 现支持最多支持16个
  26.    "p1":1, //参数0
  27.    "p2":5, //参数1
  28.    },
  29. }
  30. //第n个用户的得分 ...
  31. ];
  32. //735新加,支持各模式玩游戏
  33. var arkData = {
  34. /**模式一**/
  35. "pkMode":1, //pk模式 1-PVP 2-PVE
  36. "wording":"胜利", //结果展示wording
  37. "groupInfo":
  38. [
  39. {
  40. "rank":1, //组排名,如有并列第一的则两组的rank都是1
  41. "openIds":["4558665DATRGFGFS455","SDJIIWJIEQWJ232389DA"], //组成员openId
  42. "grpWording": //组 wording,可选
  43. [
  44. ["得分","123","分" ],
  45. ["用时","123","秒" ],
  46. ["杀怪","123" ],
  47. ]
  48. }
  49. ]
  50. }
  51. BK.QQ.scoreUpload(scoreData,function(err,cmd,data){
  52. //errCode ,0表示成功其他为异常
  53. //data = {}
  54. },arkData);

shareToMQQ(title, summary, detailUrl, picUrl)

分享游戏至手Q需要注意的是,此函数并非邀请好友进入游戏,仅是将游戏detailUrl分享出来。其中detailUrl需游戏方自己提供,建议是该款游戏的介绍页

参数:

参数 类型 名称 备注
title string 标题
summary string 分享内容
detailUrl string 跳转详情url 游戏方提供
picUrl string 图片url 游戏方提供

返回值:无

以迪斯尼过马路中的分享为例,具体参数对应的显示如下,点击后,将跳转至 detailUrl对应的地址 22 BK.QQ 房间手Q消息管理类  - 图1

例子:

  1. BK.QQ.shareToMQQ("迪斯尼过马路战绩","我获得了第1名,快来挑战我","www.xxx.com","xxx.com/xx.png");

getCmshowDressInfo(openId,callback)

获取厘米秀形象数据

参数:

参数 类型 名称 备注
openId string 待获取人的openid

返回值:无

例子:

  1. //根据openId 获取厘米秀装扮
  2. BK.QQ.getCmshowDressInfo(GameStatusInfo.openId,function(errCode,cmd,data){
  3. BK.Script.log(0,0,"cmd = "+ cmd + " data = " + data);
  4. if(errCode == 0){
  5. var jPath = BK.Script.pathForResource(data.skltPath.atlas, 'json');
  6. var aPath = BK.Script.pathForResource(data.skltPath.json, 'atlas');
  7. var ani =new BK.SkeletonAnimation(aPath, jPath, 1,null,null,null );
  8. for (var i=0;i<data.dressPath.length;i++)
  9. {
  10. var j = data.dressPath[i].atlas;
  11. var a = data.dressPath[i].atlas;
  12. var jPath = BK.Script.pathForResource(j, 'json');
  13. var aPath = BK.Script.pathForResource(a, 'atlas');
  14. ani.setAccessory(jPath, aPath);
  15. }
  16. ani.position = {x:100,y:100};
  17. BK.Director.root.addChild(ani);
  18. }
  19. });

getUserCurrencyInfo(currencyType,callback)

查询用户货币余额

参数:

参数 类型 名称 备注
currencyType number 货币类型 1- 请求获取游戏点券 2-请求获取游戏二级货币(暂不可用)
callback Function 回调 具体参数如下例子

例子:

  1. BK.QQ.getUserCurrencyInfo(1,function(errCode,cmd,data){
  2. if(errCode == 0){
  3. for(var i = 0 ; i < data.data.curreInfo.length; i++){
  4. var curr = data.data.curreInfo[i];
  5. var type = curr.curreType //3- 游戏点券 目前只有一个3值
  6. var bal = curr.balance //用户拥有的该货币数量
  7. }
  8. }
  9. });

listenGameEventEnterBackground

监听游戏退到后台事件手Q进入后台后回调,如按home键退到后台

参数:

参数 类型 名称 备注
obj object 事件绑定的对象
callback Function 回调 具体参数如下例子

例子:

  1. var obj = {};
  2. BK.QQ.listenGameEventEnterBackground(obj,function(){
  3. //
  4. })

listenGameEventEnterForeground

监听游戏回到前台

参数:

参数 类型 名称 备注
obj object 事件绑定的对象
callback Function 回调 具体参数如下例子

例子:

  1. var obj = {};
  2. BK.QQ.listenGameEventEnterForeground(obj,function(){
  3. //
  4. })

listenGameEventMaximize

监听游戏界面最大化场景:用户缩小游戏后,再次点游戏栏回到游戏

参数:

参数 类型 名称 备注
obj object 事件绑定的对象
callback Function 回调 具体参数如下例子

例子:

  1. var obj = {};
  2. BK.QQ.listenGameEventMaximize(obj,function(){
  3. //
  4. })

listenGameEventMinimize

监听游戏界面最小化场景:用户点击缩小游戏

参数:

参数 类型 名称 备注
obj object 事件绑定的对象
callback Function 回调 具体参数如下例子

例子:

  1. var obj = {};
  2. BK.QQ.listenGameEventMinimize(obj,function(){
  3. //
  4. })

sendGameMsg()

开放api注意用法:使用前提是游戏不需要在加入房间时自动发消息,需要在特定逻辑中单独调用发消息的场景。此函数是用于在加入房间后,发出游戏消息。发出的是有状态的消息,其他玩家点击消息可以进入发消息的这个房间中一起游戏。并且与queryAndJoinRoom接口的发消息是不能同时调用的。

参数:

参数 类型 名称 备注

返回值:无

例子

  1. //加入房间成功后
  2. 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 扩展信息 开发者可自定义该信息,用与传输参数

例子:

  1. 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 图片的本地路径

例子:

  1. 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对象

例子:

  1. var buff = BK.FileUtil.readFile("GameRes://resource/texture/monster.png");
  2. 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对象

例子:

  1. // 先在屏幕上添加Node并确保待上传的Node已完成渲染
  2. var tex = new BK.Texture('GameRes://resource/texture/test.png');
  3. var node = new BK.Sprite(500, 500, tex, 0, 1, 1, 1);
  4. BK.Director.root.addChild(node);
  5. ......
  6. BK.QQ.shareToArkFromNode(1, 'wording', 'extendInfo', node);

注意:如果使用BK.Room则需要填roomId。如果自建房间体系则填0。

consumeItems(itemlist,callback)

开放api分享无状态ark消息

参数:

参数 类型 名称 备注
itemlist Array 消耗的道具数组
callback function 回调

返回值:无

例子

  1. var itemlist = [
  2. {
  3. "id":1, //道具id
  4. "num":1, //数量
  5. "seq":"12312"//用于标识当前消耗的序列号。开发者可自定义
  6. },
  7. {
  8. "id":2, //道具id
  9. "num":1, //数量
  10. "seq":"12312"//用于标识当前消耗的序列号。开发者可自定义
  11. }
  12. ]
  13. BK.QQ.consumeItems(itemlist,function(errCode,succList,failList){
  14. if (errCode == 0) {
  15. for(var i = 0 ; i<succList.length; i++ ){
  16. //消耗成功的item
  17. var succItemInfo = succList[i];
  18. var id = succItemInfo.id; //道具ID
  19. }
  20. for(var i = 0 ; i<failList.length; i++ ){
  21. //消耗失败的item
  22. var faldItemInfo = failList[i];
  23. var ret = faldItemInfo.ret; //失败返回码
  24. var id = faldItemInfo.id; //道具ID
  25. }
  26. }
  27. })

rollbackGameItems(itemlist,callback)

道具回滚当因网络、游戏逻辑需要等原因需要将已消耗的道具进行回滚,恢复到未消耗状态,可以使用本接口。用法:传入对应消耗的道具id消耗时对应的流水号seq,即可回滚某次消耗

参数:

参数 类型 名称 备注
itemlist Array 消耗的道具数组
callback function 回调

返回值:无

例子:

  1. var itemlist = [
  2. {
  3. "id":1, //道具id
  4. "num":1, //数量
  5. "seq":"12312"//消耗的流水号
  6. },
  7. {
  8. "id":2, //道具id
  9. "num":1, //数量
  10. "seq":"12312"//消耗的流水号
  11. }
  12. ]
  13. BK.QQ.rollbackGameItems(itemlist,function(errCode,succList,failList){
  14. if (errCode == 0) {
  15. for(var i = 0 ; i<succList.length; i++ ){
  16. //回滚成功的itemid
  17. var succItemInfo = succList[i];
  18. var id = succItemInfo.id; //道具ID
  19. }
  20. for(var i = 0 ; i<failList.length; i++ ){
  21. //回滚失败的item
  22. var faldItemInfo = failList[i];
  23. var ret = faldItemInfo.ret; //失败返回码
  24. var id = faldItemInfo.id; //道具ID
  25. }
  26. }
  27. })

fetchOpenKey(callback)

获取openKey获取用户开发者自建后台与QQ轻游戏后台鉴权的密钥openKey

参数:

参数 类型 名称 备注
callback function 回调

返回值:无

例子:

  1. BK.QQ.fetchOpenKey(function (errCode, cmd, data) {
  2. if (errCode == 0) {
  3. var openKey = data.openKey;
  4. }
  5. });

getRankList(callback)

获取排行榜

参数:

参数 类型 名称 备注
callback function 回调

返回值:无

例子:

  1. BK.QQ.getRankList(function (errCode, cmd, data) {
  2. BK.Script.log(1, 1, "getRankList demo callback cmd" + cmd + " errCode:" + errCode + " data:" + JSON.stringify(data));
  3. if(data)
  4. {
  5. var rankList = data.data.rankList;
  6. for(var i=0;i<rankList.length;i++){
  7. var rankNode = rankList[i];
  8. BK.Script.log(1, 1, "rankList i:" + i +
  9. " nick:" + rankNode.nick + //昵称
  10. " head:" + rankNode.head + //头像url
  11. " accPoint:"+rankNode.busData.accPoint) //积分
  12. }
  13. }
  14. });

skipGame(desGameId, extendInfo)

跳转至其他游戏

参数:

参数 类型 名称 备注
desGameId number 跳转的游戏id
extendInfo string 额外参数,必须为字符串

返回值:无

例子:

  1. var desGameId = 1234; //跳转的gameid,必须为数字
  2. var extendInfo = ""; //额外参数,必须为字符串
  3. BK.QQ.skipGame(desGameId, extendInfo)

createShortCut(extendInfo)

Andriod下 发送游戏快捷方式到桌面。iOS不支持

参数:

参数 类型 名称 备注
extendInfo string 额外参数,必须为字符串

返回值:无

例子:

  1. var extendInfo = ""; //额外参数,必须为字符串
  2. BK.QQ.createShortCut(extendInfo)

原文: https://hudong.qq.com/docs/engine/api/BK.QQ.html