本次引擎2.0.5
编辑工具VSCode
目标:理解2代引擎的微信主域子域及排行榜模版
首先我们要明白为什么需要主域跟子域(微信的原因)
一代引擎需要用代码把子域纹理刷新到主域。
官方在二代引擎推出了一个好东西:
什么呢?我们往下看。
这里我使用了官方案例进行讲解,一些地方进行了补充:
我们先打开主域的工程。
好,正如我们看到的,这是一个用户界面。
左上角的是一个普通的展示用户信息的一个预制资源。
还有个按钮:
还有display
display这个节点就是子域显示区域。
要有精灵组件,因为子域的图形会形成纹理加载在display上。
重点来了!!!
重点来了!!!
重点来了!!!
二代引擎推出了一个组件,一个专门为子域而准备的组件。
(WXSubContextView)
这个组件就是为了精简代码。
我们看一下代码怎么写的:
首先在属性中声明了display节点用于显示子域;
label标签用于显示微信用户名称;
userBlock是那个预制资源的根节点;(子节点包括用户头像,名称)
第一部分:子域的显示与隐藏:
start()函数中,声明了一个标志,两个动作。就是为了把display节点放到屏幕外,实现隐藏。
第二部分:获取设备宽度高度:
使用了微信的API。微信的API中有一部分是可以在主域中使用的。
为什么要获取呢??
为了创建一个授权按钮。(玩微信小游戏时会先弹出授权窗口)
有一种做法是把按钮大小设置为全屏,颜色透明。
然后用户第一次点击肯定会点到。(先判断一下是否授权过,授权过就可以把按钮隐藏掉了)
这是我的补充:
start(){
// 获取授权状态
wx.getSetting({
success(res) {
// 如果没授权
if (!res.authSetting['scope.userInfo'])
{
let systemInfo = wx.getSystemInfoSync();//设备信息
let width = systemInfo.windowWidth;//可用窗口宽度
let height = systemInfo.windowHeight;
let button = wx.createUserInfoButton({
type: 'text',
text: ' ',
style: {
left: width * 0,
top: height * 0,
width: width * 1.0,
height: height * 1.0,
lineHeight: 40,
backgroundColor: '#00000000',
color: '#ffffff',
textAlign: 'center',
fontSize: 10,
borderRadius: 3
}
});
//、、、、、、、、、、、、、、、、
好了,我们往下看:
button.onTap()是指按钮点下去之后做什么。
底下的wx.getOpenDataContext().postMessage()是发射至子域信息。
好了,我们再看一下底下的三个方法:
这是用于display节点的隐藏与显示:
这是把获取到的信息放在图片上和label上。
cc.loader加载纹理,然后形成spriteFrame。
这是错误信息提示:
诶?
诶?
诶?
关于子域纹理刷新的代码呢?
哈哈,不需要!
绑上组件,不需要你写相关代码。
接下来说一下手动更新贴图(开关):
直接给代码(我工程的,有两个游戏模式)
前两个点击是进入两个不同的游戏模式,进入时把组件关了。
然后第三个的start是在载入时开启。
测试帧率提高26左右。
嗯,主域的先到这。
console.log(滑稽)
我们看看子域:
画布的比例要与主域的display相同(对应比例就可以)
滚动视图记得把边缘留个2像素。
我们看代码:
这就是接受主域消息的方法。
进行补充:
这是我的工程代码:
通过主域给的data来实现子域场景的切换。
怎么样,是不是懂了。
关于模块剔除,请查阅官方文档手册。
还没太懂怎么办?模版呢?
点击这里:
(感谢追风大神的分享)
加我QQ群:(博客里面的项目,群文件里都有哦)
706176551
我们一起学习!
O(∩_∩)O~~