框架与生命周期
调用代码
bricks引擎代码包含原生以及js层部分,旧版本开发者引用protocol.js来进行引擎js层接口的引用。新的开发者推荐使用qqPlayCore.js文件进行引用。单独引用protocol.js的方法也可以正常使用。
protocol.js为qqPlayCore.js的子集,除此外qqPlayCore.js还包含webscoket.js、Game.js等文件。
旧
BK.Script.loadlib('GameRes://script/core/net/protocol.js');
新(推荐)
BK.Script.loadlib('GameRes://qqPlayCore.js');
游戏配置
游戏包中必须含有gameConfig.json文件,用于进行游戏横竖屏、H5游戏url等整体配置。json内容如下例
值 | 说明 | 备注 |
---|---|---|
viewMode | 控制横竖屏状态 | 1.竖屏 2.左横屏(home键在左边)3.右横屏(home键在右边) |
enterUrl | H5游戏入口url | H5游戏填写,非H5游戏不填 |
例子
{
"viewMode":2,
"enterUrl":""
}
UI处理
统一框架UI有横屏&竖屏模式,需要开发者如下处理
- 7.5.8及以上版本,去掉游戏自己的关闭&缩小按钮,并根据统一的关闭缩小按钮的位置对游戏UI做相应处理
游戏事件以及生命周期
开发者使用BK.Game
类可以后可以监听整体游戏生命流程。
BK.Game中的游戏内事件
onLoad
程序启动事件。游戏脚本加载完成后,进到此处
onMinmize
最小化事件,用户点击"收起游戏"
onClose
游戏关闭事件。用户点击右上角"关闭"图标,关闭游戏
开发者需处理销毁动作:上报用户成绩
onEnterbackground
退后台事件。用户按home键将手Q退至后台。
onEnterforeground
回到前台事件。手Q进程从后台回到前台。
onShare
分享事件。用户点击 “分享游戏”后触发。
手Q 7.6.5 后支持分享多渠道,开发者可自定义分享的数据
多渠道分享指 开发者可以通过返回特定类型的数据,达到自定义分享数据的效果 通过返回带有特定字段的数据
字段 | 类型 | 说明 |
---|---|---|
summary | string | 分享至QQ中,聊天窗气泡-标题 |
picUrl | string | 分享至QQ中,必须为url,聊天窗气泡-图片 |
extendInfo | string | 分享至QQ中,必须为string,用于聊天窗气泡-额外信息 |
localPicPath | string | 分享图片,必须为GameRes://或GameSandBox://为前缀。用于分享至 空间、微信、朋友圈 |
本分享与BK.QQ.Share相同,具体查看此处
分享成功/失败后,触发onShareComplete函数
onShareComplete
分享结果事件。返回分享结果。
onNetworkChange
网络环境切换事件。网络环境进行切换时会触发本事件
具体state的取值标识不同的切换情况。取值如下
取值 | 说明 |
---|---|
1 | 无网络到蜂窝网络 |
2 | 无网络到wifi |
3 | 蜂窝网络到wifi |
4 | 蜂窝网络到无网络 |
5 | wifi到无网络 |
6 | wifi网络到蜂窝网络 |
onException
全局js异常/错误
代码实例:Res/script/demo/GameDemo.js(需bitbucket权限)
游戏呼起入口
在手Q中,游戏可能会在不同的入口中被呼起,开发者通过GameStatusInfo.src 参数处理用户打开游戏时体验。
大多数情况情况直接打开游戏大厅即可,在少数情况需特殊处理(聊天界面消息)</font>
实例代码如下
var SRC_AIO_BUBBLE_NORMAL = 200, //聊天窗游戏消息
var SRC_AIO_BUBBLE_SHARE = 201, //分享消息
var src = GameStatusInfo.src;
//聊天窗游戏消息
if (src == 200 /* SRC_AIO_BUBBLE_NORMAL */) {
//
var room = new BK.Room();
var roomId = GameStatusInfo.roomId;
var gameId = GameStatusInfo.gameId;
var openId = GameStatusInfo.openId;
//从聊天入口进入游戏,优先加入房间,如加入房间失败,则跳转至游戏大厅
room.queryAndJoinRoom(gameId, roomId, openId, function (statusCode, room) {
if (statusCode == 0) {
//正常加入房间
}
else {
//跳转至游戏大厅
}
};
}
//聊天面板中的大厅与 动态-玩一玩入口的 可以统一进入游戏主页
else {
//加载游戏主页
}
GameStatusInfo.src 其他取值
场景值(src) | 场景描述 |
---|---|
100 | AIO面板点击开始游戏(已废弃) |
103 | 从AIO发起陌生人入口(已废弃) |
108 | AIO面板点击大面板小房子按钮(已废弃) |
110 | AIO消息流文字识别 |
200 | 点击AIO游戏邀请消息 |
201 | 点击AIO游戏分享消息 |
202 | 热聊folder中点击进入游戏按钮 |
203 | 同200,在手Q7.6.0后废弃 |
204 | 在微信点击游戏邀请后打开手Q后启动游戏 |
205 | 商城的游戏列表跳转AIO发起跟好友的游戏 |
207 | 旧版玩一玩WEB页面启动游戏(已废弃) |
208 | 新版玩一玩WEB页面启动游戏 |
209 | 游戏城WEB页面启动游戏 |
210 | 厘米秀互动页打开游戏 |
220 | 手Q扫二维码后拉起游戏,没有中间的h5页面 |
221 | 通过手Q搜索拉起游戏 |
222 | 从安卓桌面打开游戏 |
223 | 从厘米岛打开游戏 |
224 | 争霸赛活动页打开引力球游戏 |
225 | 从热玩打开游戏 |
226 | 通过列表+号打开游戏 |
228 | 任务中心完成任务打开游戏 |
229 | 手Q扫描后先打开h5页面,然后h5页面打开游戏 |
230 | 用户通过微信扫描二维码打开了轻游戏 |
301 | 腾讯动漫打开游戏 |
302 | 从A游戏打开B游戏 |
310 | 从空间玩吧打开游戏 |
311 | 从厘米秀运营活动页面打开游戏 |
312 | 手机QQ游戏中心页面打开游戏 |
313 | 从手机QQ服务号打开游戏 |
314 | 从企鹅电竞手Q结合版打开游戏 |
315 | 从B2C红包H5页面打开游戏 |
316 | 从企鹅电竞独立版APP打开游戏 |
317 | 从aio面板-轻游戏入口打开游戏 |
318 | 用户在一起玩功能中,从h5打开游戏 |
319 | 用户在一起玩功能中,从客户端打开游戏 |
320 | 从QQ钱包入口进入游戏 |
321 | AIO气泡打开游戏 |
322 | 从广告链接打开游戏 |
323 | 抽屉页Tips红点 |
324 | 手Q公众号打开游戏 |
325 | 游戏盒子打开游戏 |
326 | 手Q搜索网络区打开游戏 |
327 | 从钱包推广页面打开游戏 |
328 | 从游戏红包页面打开游戏 |
329 | 开胶囊时打开游戏 |
330 | 一起玩更多玩法进入游戏 |
原文: https://hudong.qq.com/docs/engine/engine/native/framework/intro.html