在cocos中引入微信自动登录,当用户没有授权时会拉起获取授权的按钮,点击后闪几下黑屏
代码:
cc.Class({
extends: cc.Component,
properties: {
},
// LIFE-CYCLE CALLBACKS
start () {
this.autoLogin();
},
async autoLogin(){
const setting = await api_wx.getSetting();
let userInfo = null;
//判断用户自动登录配置
if (setting.authSetting["scope.userInfo"]) {
//通过直接获取用户信息,登录
userInfo = await api_wx.getUserInfo();
} else {
//如果未授权则调起授权按钮,获取授权,如果不给授权则退出游戏
console.log('未授权');
userInfo =await this.getAuth();
}
},
。。。。
发现当autoLogin()方法改为在onLoad ()中调用就不会出现黑屏,
官方文档:
onLoad
组件脚本的初始化阶段,我们提供了 onLoad 回调函数。onLoad 回调会在节点首次激活时触发,比如所在的场景被载入,或者所在节点被激活的情况下。在 onLoad 阶段,保证了你可以获取到场景中的其他节点,以及节点关联的资源数据。onLoad 总是会在任何 start 方法调用前执行,这能用于安排脚本的初始化顺序。通常我们会在 onLoad 阶段去做一些初始化相关的操作
start
start 回调函数会在组件第一次激活前,也就是第一次执行 update 之前触发。start 通常用于初始化一些需要经常修改的数据,这些数据可能在 update 时会发生改变。
在第一次update之前触发,可能是因为awai等待用户授权的时间过长,导致update方法不能正常刷新?
顺带说一句,代码里能用async和await是因为用的是typescript(新建typescript,但是写javascript代码)