框架与生命周期

调用代码

bricks引擎代码包含原生以及js层部分,旧版本开发者引用protocol.js来进行引擎js层接口的引用。新的开发者推荐使用qqPlayCore.js文件进行引用。单独引用protocol.js的方法也可以正常使用。

protocol.js为qqPlayCore.js的子集,除此外qqPlayCore.js还包含webscoket.js、Game.js等文件。

 1.1.2.框架与生命周期  - 图1

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游戏不填

例子

  1. {
  2. "viewMode":2,
  3. "enterUrl":""
  4. }

UI处理

统一框架UI有横屏&竖屏模式,需要开发者如下处理

  • 7.5.8及以上版本,去掉游戏自己的关闭&缩小按钮,并根据统一的关闭缩小按钮的位置对游戏UI做相应处理

游戏事件以及生命周期

开发者使用BK.Game类可以后可以监听整体游戏生命流程。

 1.1.2.框架与生命周期  - 图2

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>

 1.1.2.框架与生命周期  - 图3

实例代码如下

  1. var SRC_AIO_BUBBLE_NORMAL = 200, //聊天窗游戏消息
  2. var SRC_AIO_BUBBLE_SHARE = 201, //分享消息
  3. var src = GameStatusInfo.src;
  4. //聊天窗游戏消息
  5. if (src == 200 /* SRC_AIO_BUBBLE_NORMAL */) {
  6. //
  7. var room = new BK.Room();
  8. var roomId = GameStatusInfo.roomId;
  9. var gameId = GameStatusInfo.gameId;
  10. var openId = GameStatusInfo.openId;
  11. //从聊天入口进入游戏,优先加入房间,如加入房间失败,则跳转至游戏大厅
  12. room.queryAndJoinRoom(gameId, roomId, openId, function (statusCode, room) {
  13. if (statusCode == 0) {
  14. //正常加入房间
  15. }
  16. else {
  17. //跳转至游戏大厅
  18. }
  19. };
  20. }
  21. //聊天面板中的大厅与 动态-玩一玩入口的 可以统一进入游戏主页
  22. else {
  23. //加载游戏主页
  24. }

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