个人案例
- 作者请你吃顿饭
各种类型的趣味智力问答,闯过36关,作者请你吃顿饭。
作者请你吃顿饭扫码体验
是这样的:授权一般分为两种类型:一种是静默授权,另一种是非静默授权(包括用户授权、地理位置、手机号授权等),其中静默授权用户是无感知的,但静默授权只能获取到用户的openid,所以这也就解释了楼主的疑问,为什么换了台手机,你的小游戏数据还在,因为开发者根据你的openid,把你的相关游戏数据存到数据库里了,而你换了台手机,只要是相同微信号对应的相同应用,openid是不变的。
小游戏不授权怎么记录关卡我看有一些游戏可以不用授权,我换了一台手机,关卡记录还在,这是怎么做到的
2019-10-21我试了一下,没有你出现的问题,这里有两个点你参考一下吧: (1)首先确认一下,是不是本地缓存的原因,你A手机第二次分享给B后,B手机需要先把快捷栏中的图标删掉,然后再重新打开A分享出来的卡片试试; (2)如果还不行,可以在wx.onShow中的回调函数中去获取这个aa参数,经测试,这样是没问题的。
wx.shareAppMessage 使用时遇到这样的问题,如何解决实时获取?在A手机上 调用分享功能代码, wx.shareAppMessage({query: ‘aa=1’}); 在B手机上获取分享参数值 : var launch = wx.getLaunchOptionsSync(); var bb = launch.query.aa; console.log(bb);//此时打印的值为1 然后第二次: 在A手机上 调用分享功能代码, wx.shareAppMessage({query: ‘aa=2’}); //已经确认传出去的值是2而不是1 在B手机上获取分享参数值 : var launch = wx.getLaunchOptionsSync(); var bb = launch.query.aa; console.log(bb);//此时打印的值为1而不是2; 以上是我在开发中遇到的问题,就是说获取分享的参数永远是第一次的参数值,而不是后来的参数值,这个问题如何解?
2019-10-21本来代码量就不会占太多体积大小,主要还是一些图片/音效资源会占体积大小,所以你可以考虑把图片/音效资源放在云服务的存储中;至于过多的前端代码放到服务端,我是不太建议的,这也意味着你大量的逻辑都必须走请求接口,实现不是太合理。
尽可能把小程序的功能放在云函数,是不是小程序(启动时下载的)体积就小了?云函数是腾讯云提供的很好的功能,安全可靠。如果尽可能把小程序的功能放在云函数里,是不是小程序运行加载时的体积就减小很多了,这样就能加速小程序启动速度。所以,启动加载时的小程序包里,包含云函数的那部分代码吗?
2019-10-20开放数据域里的canvas和context要重新创建过的,不能跟主域共用;没看到你完整的代码,但我猜测是context的原因。
小游戏开放数据域加载本地图片失败(开发者工具)开放数据域画一张本地的图片加载onerror,在开发者工具里面的,没试过真机,原先图片的位置fillRect画纯色没问题。 var bgImage = wx.createImage(); bgImage.onload = function () { image.width = width; image.height = height; context.drawImage(image, left, top, width, height); } bgImage.onerror = function (error) { console.log("error", error); } bgImage.src = "image/di.png"; [图片] [图片] 开放数据域完整代码: [代码]var[代码] [代码]friendsData = [];[代码][代码]var[代码] [代码]sharedCanvas = wx.getSharedCanvas();[代码][代码]var[代码] [代码]sharedWidth = sharedCanvas.width;[代码][代码]var[代码] [代码]sharedHeight = sharedCanvas.height;[代码][代码]var[代码] [代码]context = sharedCanvas.getContext([代码][代码]'2d'[代码][代码]);[代码] [代码]var[代码] [代码]topOffset = 0;[代码][代码]// offset按理来说应该都是负数[代码][代码]var[代码] [代码]minOffset = 0;[代码] [代码]var[代码] [代码]lastTouchedY = 0;[代码] [代码]function[代码] [代码]roundRect(ctx, image, x, y, w, h, r) {[代码][代码] [代码][代码]var[代码] [代码]min_size = Math.min(w, h);[代码][代码] [代码][代码]if[代码] [代码](r > min_size / 2) r = min_size / 2;[代码][代码] [代码][代码]ctx.beginPath();[代码][代码] [代码][代码]ctx.moveTo(x + r, y);[代码][代码] [代码][代码]ctx.arcTo(x + w, y, x + w, y + h, r);[代码][代码] [代码][代码]ctx.arcTo(x + w, y + h, x, y + h, r);[代码][代码] [代码][代码]ctx.arcTo(x, y + h, x, y, r);[代码][代码] [代码][代码]ctx.arcTo(x, y, x + w, y, r);[代码][代码] [代码][代码]ctx.closePath();[代码][代码]}[代码] [代码]function[代码] [代码]initFriendsData() {[代码][代码] [代码][代码]// wx.setUserCloudStorage({[代码][代码] [代码][代码]// KVDataList: [{ key: "rank-score", value: "10" }][代码][代码] [代码][代码]// });[代码][代码] [代码][代码]wx.getFriendCloudStorage({[代码][代码] [代码][代码]keyList: [[代码][代码]"rank-score"[代码][代码]],[代码][代码] [代码][代码]success: [代码][代码]function[代码] [代码](res) {[代码][代码] [代码][代码]friendsData = [];[代码][代码] [代码][代码]for[代码] [代码]([代码][代码]var[代码] [代码]index = 0; index < res.data.length; ++index) {[代码][代码] [代码][代码]var[代码] [代码]user = res.data[index];[代码][代码] [代码][代码]user.avatarUrl;[代码][代码] [代码][代码]user.nickname;[代码][代码] [代码][代码]user.openid;[代码] [代码] [代码][代码]var[代码] [代码]userData = {};[代码][代码] [代码][代码]userData.avatarUrl = user.avatarUrl;[代码][代码] [代码][代码]userData.nickname = user.nickname;[代码][代码] [代码][代码]for[代码] [代码]([代码][代码]var[代码] [代码]dataIndex = 0; dataIndex < user.KVDataList.length; ++dataIndex) {[代码][代码] [代码][代码]var[代码] [代码]data = user.KVDataList[dataIndex];[代码][代码] [代码][代码]userData.key = data.key;[代码][代码] [代码][代码]userData.value = data.value;[代码][代码] [代码][代码]}[代码][代码] [代码][代码]friendsData.push(userData);[代码][代码] [代码][代码]}[代码][代码] [代码][代码]friendsData = friendsData.sort([代码][代码]function[代码][代码](a, b) {[代码][代码] [代码][代码]return[代码] [代码]parseInt(a.value) > parseInt(b.value);[代码][代码] [代码][代码]});[代码][代码] [代码][代码]drawSharedCanvas([代码][代码]true[代码][代码]);[代码][代码] [代码][代码]addTouchEvent();[代码][代码] [代码][代码]}[代码][代码] [代码][代码]});[代码][代码]}[代码] [代码]function[代码] [代码]addTouchEvent() {[代码][代码] [代码][代码]wx.offTouchStart();[代码][代码] [代码][代码]wx.offTouchMove();[代码][代码] [代码][代码]wx.onTouchStart([代码][代码]function[代码][代码](event) {[代码][代码] [代码][代码]lastTouchedY = event.changedTouches[0].pageY;[代码][代码] [代码][代码]});[代码][代码] [代码][代码]wx.onTouchMove([代码][代码]function[代码][代码](event) {[代码][代码] [代码][代码]var[代码] [代码]touchedY = event.changedTouches[0].pageY;[代码] [代码] [代码][代码]var[代码] [代码]changed = touchedY - lastTouchedY;[代码][代码] [代码][代码]lastTouchedY = touchedY;[代码][代码] [代码][代码]topOffset = topOffset + changed;[代码][代码] [代码][代码]if[代码] [代码](topOffset >= 0) {[代码][代码] [代码][代码]topOffset = 0;[代码][代码] [代码][代码]}[代码][代码] [代码][代码]if[代码] [代码](topOffset < minOffset) {[代码][代码] [代码][代码]topOffset = minOffset;[代码][代码] [代码][代码]}[代码][代码] [代码][代码]drawSharedCanvas([代码][代码]false[代码][代码]);[代码][代码] [代码][代码]});[代码][代码]}[代码] [代码]function[代码] [代码]drawSharedCanvas(isInit) {[代码][代码] [代码][代码]context.clearRect(0, 0, sharedWidth, sharedHeight);[代码] [代码] [代码][代码]// 背景可以不画,这样背景就是透明的,由lua来画背景就可以了[代码][代码] [代码][代码]context.fillStyle = [代码][代码]"red"[代码][代码];[代码][代码] [代码][代码]context.fillRect(0, 0, sharedWidth, sharedHeight);[代码] [代码] [代码][代码]for[代码] [代码]([代码][代码]var[代码] [代码]i = 0; i < friendsData.length; ++i) {[代码][代码] [代码][代码]([代码][代码]function[代码] [代码](i, user, isInit) {[代码][代码] [代码][代码]var[代码] [代码]user = friendsData[i];[代码][代码] [代码][代码]var[代码] [代码]index = parseInt(i);[代码][代码] [代码][代码]var[代码] [代码]top = (70 * index) + ((index + 1) * 10) + topOffset;[代码][代码] [代码][代码]var[代码] [代码]left = sharedWidth * 0.1;[代码][代码] [代码][代码]var[代码] [代码]width = sharedWidth * 0.8;[代码][代码] [代码][代码]var[代码] [代码]height = 70;[代码] [代码] [代码][代码]// context.fillStyle = "green";[代码][代码] [代码][代码]// context.fillRect(left, top, width, height);[代码][代码] [代码][代码]var[代码] [代码]bgImage = wx.createImage();[代码][代码] [代码][代码]bgImage.onload = [代码][代码]function[代码] [代码]() {[代码][代码] [代码][代码]console.log([代码][代码]"=================================================================="[代码][代码]);[代码][代码] [代码][代码]console.log([代码][代码]"onload"[代码][代码]);[代码][代码] [代码][代码]bgImage.width = width;[代码][代码] [代码][代码]bgImage.height = height;[代码][代码] [代码][代码]context.drawImage(bgImage, left, top, width, height);[代码][代码] [代码][代码]}[代码][代码] [代码][代码]bgImage.onerror = [代码][代码]function[代码] [代码](error) {[代码][代码] [代码][代码]console.log([代码][代码]"=================================================================="[代码][代码]);[代码][代码] [代码][代码]console.log([代码][代码]"error"[代码][代码], error);[代码][代码] [代码][代码]}[代码][代码] [代码][代码]bgImage.src = [代码][代码]"image/di.png"[代码][代码];[代码] [代码] [代码][代码]// 画头像[代码][代码] [代码][代码]var[代码] [代码]image = wx.createImage();[代码][代码] [代码][代码]image.onload = [代码][代码]function[代码] [代码]() {[代码][代码] [代码][代码]image.width = 50;[代码][代码] [代码][代码]image.height = 50;[代码][代码] [代码][代码]context.save();[代码][代码] [代码][代码]roundRect(context, image, left + 10, top + 10, 50, 50, 10);[代码][代码] [代码][代码]context.clip();[代码][代码] [代码][代码]context.drawImage(image, left + 10, top + 10, 50, 50);[代码][代码] [代码][代码]}[代码][代码] [代码][代码]image.src = user.avatarUrl;[代码] [代码] [代码][代码]// 画昵称[代码][代码] [代码][代码]context.fillStyle = [代码][代码]"yellow"[代码][代码];[代码][代码] [代码][代码]context.font = [代码][代码]"25px '微软雅黑'"[代码][代码];[代码][代码] [代码][代码]context.textBaseline = [代码][代码]"middle"[代码][代码];[代码][代码] [代码][代码]context.fillText(user.nickname, left + 70, top + 37.5);[代码] [代码] [代码][代码]// 画分数[代码][代码] [代码][代码]context.fillStyle = [代码][代码]"blue"[代码][代码];[代码][代码] [代码][代码]context.fillText([代码][代码]"得分: "[代码] [代码]+ user.value, width - 100, top + 37.5);[代码] [代码] [代码][代码]if[代码] [代码](isInit) {[代码][代码] [代码][代码]minOffset = (top + 80 - sharedHeight) * (-1);[代码][代码] [代码][代码]if[代码] [代码](minOffset > 0) {[代码][代码] [代码][代码]minOffset = 0;[代码][代码] [代码][代码]}[代码][代码] [代码][代码]if[代码] [代码](minOffset < minOffset) {[代码][代码] [代码][代码]minOffset = minOffset;[代码][代码] [代码][代码]}[代码][代码] [代码][代码]}[代码][代码] [代码][代码]})(i, friendsData[i], isInit);[代码][代码] [代码][代码]}[代码][代码]}[代码] [代码]wx.onMessage([代码][代码]function[代码][代码](data) {[代码][代码] [代码][代码]if[代码] [代码](data.command === [代码][代码]'init'[代码][代码]) {[代码][代码] [代码][代码]sharedWidth = sharedCanvas.width;[代码][代码] [代码][代码]sharedHeight = sharedCanvas.height;[代码][代码] [代码][代码]initFriendsData();[代码][代码] [代码][代码]}[代码][代码]});[代码]
2019-10-17这样试试: wx.onAudioInterruptionEnd(() => { bgm.play(); }) wx.onShow(() => { bgm.play(); })
iOS设备双击Home键自动关闭音乐后回到小游戏无法恢复播放[代码]var[代码] [代码]bgm = wx.createInnerAudioContext()[代码][代码]bgm.autoplay = [代码][代码]true[代码][代码]bgm.loop = [代码][代码]true[代码][代码]bgm.src = [代码][代码]"res/hall_background_music.mp3"[代码] [代码]wx.onShow([代码][代码]function[代码] [代码](options) {[代码][代码] [代码][代码]console.log([代码][代码]"onShow"[代码][代码])[代码][代码] [代码][代码]bgm.play();[代码][代码]});[代码] 小游戏打开时马上播放背景音乐,双击 Home 键切换到任务列表,音乐被暂停(停止)。 回到小游戏,音乐无法恢复。 onShow 事件并没有被触发。 这个问题要怎么处理?
2019-10-16对的,把数据存到表里,然后再进行排序。
现在主域可以用getUserInfo获取非好友信息吗? 那世界排行榜怎么制作?我先用creatorUserInfoButton获取用户授权,然后授权成功后,在主域用getUserInfo获取非好友信息?并绘制排行榜内容, 这样逻辑是正确的吗? 我用的是微信开发者工具里面的 云开发,
2019-10-15我试了一下,微信中的昵称如果能用特殊字符更名的话,是可以正常显示的(不能更名的特殊字符,就不用管了,微信会有提示的),同时也能正常写入表,我是用云服务的mongodb存数据的。
玩家昵称是特殊字符想问问玩家昵称里有特殊字符,要显示这些特殊字符(主要是表情图片) 有没有通用的方法.想问问思路.
2019-10-14这样试试: context.font = 80 + 'px Arial';
请问fillText 怎么更改字体大小[图片] 发现不起作用 context.font 直接赋值还是那么大 [图片]
2019-10-14你是不是漏传了配置项参数keyList,这样试试: wx.getFriendCloudStorage({ keyList: ['level'], success: res => { if (res.data){ console.log(res.data[0].KVDataList.length); } } })
getFriendCloudStorage 获得托管数据wx.setUserCloudStorage({ KVDataList: [{ 'key': 'level','value':'0'}], success(e) { console.log('向wx存储用户数据成功'); console.log(e); }, fail(e) { console.log('向wx存储用户数据失败'); console.log(e); } }); 在子域里调用存储用户的托管数据.返回log 向wx存储用户数据成功 但是调用 wx.getFriendCloudStorage({success: res => { if (res.data) {console.log(res.data[0].KVDataList.length);} }) 获得托管数据. 但是res.data[0].KVDataList数组时空????? log截图 [图片]
2019-10-14 let aa = wx.createInnerAudioContext(); aa.src = '音频地址'; aa.onCanplay (() => { //aa就是你当前的音频对象 });
音频回调函数 onCanplay() 如何获取当前音频对象?页面上有多个音频对象,都是使用 wx.createInnerAudioContext() 创建。在回调函数中,怎样获取当前的音频对象?
2019-10-13