赞
踩
你应该准备好了如下开发环境:
1、Cocos Creator。此处为2.2.2版本。
2、微信小程序开发工具。此处为stablev1.02。
新建一个工程,场景如下:
其中:
image:用来显示用户头像;
label:显示用户昵称;
msgbox:显示用户头像的URL,供调试使用;
button:用来点击获取用户信息。
然后,新建一个js脚本,绑定到canvas。下面讲解js脚本。
获取用户信息需要用户授权,也就是需要程序员显式调用wx.createUserInfoButton弹出个框让用户确认。
这里有几个坑需要注意:
1、小程序调试的运行环境很多,可以是虚拟机、浏览器、真机。获取用户信息只有在真机环境下才能调试!因此,需要使用window.wx判断是否运行在真机环境。
2、res.userInfo.avatarUrl返回的是微信用户头像的URL。类似:
https://mp.weixin.qq.com/kjsdfhGBKLFndklsgfsldg/137
你应该也发现了,坑的是,这个URL没有图片扩展名!你可能会加个.jpg,结果发现还是不对!要后面加上**?.jpg**才能构成完整路径!
此外,如果扩展名不是jpg,是png咋办?跨域错误怎么办?这就要程序员自己慢慢解决了。可以参考https://blog.csdn.net/lvyan1994/article/details/82153366。
下面给出最精简的代码,帮助你理解其核心代码。
更多信息,比如获取用户性别、地理位置等等,可以参考 微信官方文档。
start () { if (window.wx) {//确定是在微信真机环境下 wx.getSystemInfo({ success: function(data) { btnWeixinUser = wx.createUserInfoButton({//定义按钮样式 type: 'text', text: '微信授权', style: { left: data.screenWidth * 0.2, top: data.screenHeight * 0.73, width: data.screenWidth * 0.65, height: data.screenHeight * 0.07, lineHeight: data.screenHeight * 0.07, backgroundColor: '#fe714a', color: '#ffffff', textAlign: 'center', fontSize: data.screenHeight * 0.025, borderRadius: 8 } }); btnWeixinUser.onTap(function(res) {//响应回调,获取信息 nickName = res.userInfo.nickName; var url = res.userInfo.avatarUrl; }); } }); } },
现在图片URL到手了,怎么显示头像呢?
这里我们使用cc.loader.load来把网络图片保存到一个SpriteFrame里。
之前也说过了,扩展名是你自己加的,如果jpg不行,就改成png再来一次。。。
等下载完毕后,修改image图片的spriteFrame即可。
cc.loader.load(avatarUrl, function (err, texture) {
g_myHeadSpriteFrame = new cc.SpriteFrame(texture);
g_myHead_Ready = true;
});
...
if (g_myHead_Ready)
this.mySprite.spriteFrame = g_myHeadSpriteFrame;
var isClickCd = false; var btnWeixinUser; var nickName; var avatarUrl; var g_info; var g_myHeadSpriteFrame; var g_myHead_Ready = false; cc.Class({ extends: cc.Component, properties: { label: { default: null, type: cc.Label }, msgBox: { default: null, type: cc.EditBox }, mySprite: { default: null, type: cc.Sprite }, }, btnClick1: function (event, customEventData) { this.msgBox.Label = nickName; this.msgBox.string = avatarUrl; if (g_myHead_Ready) this.mySprite.spriteFrame = g_myHeadSpriteFrame; else console.log('downloading...'); }, start () { if (window.wx) { this.msgBox.string = "Weixin"; cc.log("Yes.") wx.getSystemInfo({ success: function(data) { btnWeixinUser = wx.createUserInfoButton({ type: 'text', text: '开始多人游戏', style: { left: data.screenWidth * 0.2, top: data.screenHeight * 0.73, width: data.screenWidth * 0.65, height: data.screenHeight * 0.07, lineHeight: data.screenHeight * 0.07, backgroundColor: '#fe714a', color: '#ffffff', textAlign: 'center', fontSize: data.screenHeight * 0.025, borderRadius: 8 } }); btnWeixinUser.onTap(function(res) { if (isClickCd) { return; } isClickCd = true; setTimeout(function() { isClickCd = false; }, 1000); nickName = res.userInfo.nickName; var url = res.userInfo.avatarUrl; avatarUrl = res.userInfo.avatarUrl + "?.jpg"; btnWeixinUser.hide(); cc.loader.load(avatarUrl, function (err, texture) { g_myHeadSpriteFrame = new cc.SpriteFrame(texture); g_myHead_Ready = true; console.log(avatarUrl); }); }); } }); } else { cc.log("no.") this.label.string = "no Weixin"; this.msgBox.string = "no Weixin"; } }, });
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。