- wx.checkSession.success回调中调用wx.login:invalid code?
场景如下: 启动小程序 onLaunch() { wx.checkSession( success: (res) => { // sessionKey 未失效 // 正常来说这里是不许要处理的 // 重点!重点!重点: // 但实际情况中 用户手机中缓存的 sessionId 出于各种原因被删除了, 后续程序中需要用到 sessionId 的地方都会收到影响 let sessionId = wx.getStorageSync("sessionId"); if (null == sessionId || "" == sessionId) { // 此处 wx.login 返回的 code invalid code } }, fail: (res) => { // sessionKey 已经失效,需要重新执行登录流程 wx.login( success:(res) => { wx.setStorageSync("sessionId", sessionId); } ); } } 老哥们 有没有处理过此种场景 指点一二
2021-04-15 - 【建议】关于小程序审核的建议
前言: 小程序审核一直是一个令人头疼的话题,其中不乏一些令人看不懂的审核不通过的理由,此处暂且不谈;我想说的是,小程序审核耗时的问题,有事提交审核1、2个小时就能通过但有时需要漫长的七天,甚至超过了七天后,在社区反馈也只是说重新提交审核,并没有给出合理的解释。这些事情最后都由我们这些开发小程序的企业或个人开发者买单,无论是系统出了一个紧急的BUG还是迫切想要在某个时间点推出一个新功能,熬夜加班终于在规定时间完成开发测试,但是提交审核后,审核通过的时间却早已超过我们所预想的理想时间,导致之前的一切努力都化为泡影,这确实令人失望,痛心。 我对小程序审核的建议: 1.希望小程序审核能够推出预通过模式,即新提交的代码可以直接上线,之后再对所提交的代码进行审核,如果审核不通过则进行下架整改(此模式只针对信用分为100分的小程序,就是没有过违规情况出现的小程序,如果违规则一次扣除10分,低于80分在不能使用预通过模式,保持良好记录后可缓慢加分,如果多次严重违规,则永远不能在使用此模式) 2.社区很多开发者对小程序审核存在很多争议,如别人的小程序模式或内容和我一样为什么我的审核不通过,而同类型的却有一大堆,诸如此类的帖子很多,希望小程序审核人员能够严格按照标准来审核小程序,当然每个人对标准的衡量也不同,随意存在误差在所难免,针对此情况我的建议是:小程序审核由多人进行,以免出现个别审核人员对审核标准的错误判断,当出现不同分歧后可沟通确定最终结果,当审核结果为不通过时,请尽量用开发者能理解的方式去解释不通过原因,我们经常会被这个搞得一头雾水。 3.我们都很喜欢小程序,希望官方能多和开发者对话,这样才能让双方都走在正确的道路上。 建议人:花易折
2018-01-27 - 录音管理器 recorderManager.onStop监听事件问题
问题说明: 1.A、B两个页面都调用录音接口,每个页面都有各自的recorderManager.onStop监听事件,里面写着不同的业务逻辑。 2.A、B录音结束时总是调用B页面的recorderManager.onStop监听事件,导致无法继续处理A页面的业务逻辑。 我预期的全局唯一录音管理器是: A页面调用录音功能后,B页面也调用录音功能,应该立即结束A页面的录音,同时打开B页面的录音功能,并且每个页面的监听事件能够处理单独的逻辑。 问题复现: 1.在A、B页面都写上recorderManager.onStop监听事件,里面写着不同的业务逻辑,例如:分别输出页面1、2两个数字。 说明: 这个问题是我处理起来很痛苦,因为如果我有10个页面调用录音功能,那么,我要把10个页面的处理逻辑都写在同一个recorderManager.onStop中,这样会导致程序十分复杂与不稳定,希望能有更好的解决方案
2018-01-24 - canvas性能问题
1.下面代码在绘制是用的是wx.drawCanvas();原因是我想要把用户绘制的动作保存下来,如果用户中途退出,可以保证下次打开时不从头开始。 2.我会在用户保存后将缓存清空,暂时还没实现。 3.画布在安卓机上,画不了多少内容就很卡,ios还好,基本上感觉不出来,有没有大神能指导我一下该怎么优化代码,重点在 canvasStart、canvasMove、canvasEnd方法上。 [代码]/**[代码][代码] [代码][代码]* 路径: pages/draw/draw.js[代码][代码] [代码][代码]* 作者: 花易折[代码][代码] [代码][代码]* 时间: 2017年10月28日23:11:09[代码][代码] [代码][代码]*/[代码] [代码]var[代码] [代码]that = [代码][代码]null[代码][代码];[代码] [代码]// canvas 全局配置[代码][代码]var[代码] [代码]context = [代码][代码]null[代码][代码];[代码][代码]// 使用 wx.createContext 获取绘图上下文 context[代码][代码]var[代码] [代码]isButtonDown = [代码][代码]false[代码][代码];[代码][代码]var[代码] [代码]arrx = [];[代码][代码]var[代码] [代码]arry = [];[代码][代码]var[代码] [代码]arrz = [];[代码][代码]var[代码] [代码]canvasw = 0;[代码][代码]var[代码] [代码]canvash = 0;[代码] [代码]// 获取缓存绘制数据[代码][代码]var[代码] [代码]drawActions = wx.getStorageSync([代码][代码]"drawActions"[代码][代码]);[代码] [代码]//获取系统信息[代码][代码]wx.getSystemInfo({[代码][代码] [代码][代码]success: [代码][代码]function[代码] [代码](res) {[代码][代码] [代码][代码]// canvas宽度[代码][代码] [代码][代码]canvasw = res.windowWidth;[代码][代码] [代码][代码]// 宽高比[代码][代码] [代码][代码]var[代码] [代码]ratio = res.windowWidth / res.windowHeight;[代码][代码] [代码][代码]// canvas高度[代码][代码] [代码][代码]canvash = 750 / ratio / 2 - 200;[代码][代码] [代码][代码]}[代码][代码]});[代码] [代码]//注册页面[代码][代码]Page({[代码][代码] [代码][代码]/**[代码][代码] [代码][代码]* 页面的初始数据[代码][代码] [代码][代码]*/[代码][代码] [代码][代码]data: {[代码][代码] [代码][代码]// 已经有绘制内容[代码][代码] [代码][代码]drawing: [代码][代码]false[代码][代码],[代码][代码] [代码][代码]// 当前画笔颜色坐标[代码][代码] [代码][代码]currentPenIndex: 7,[代码][代码] [代码][代码]// 当前背景颜色坐标[代码][代码] [代码][代码]currentBackIndex: 0,[代码][代码] [代码][代码]// true:选中画笔, false:选中橡皮[代码][代码] [代码][代码]isPen: [代码][代码]true[代码][代码],[代码][代码] [代码][代码]//画笔宽度[代码][代码] [代码][代码]penWidth: 4,[代码][代码] [代码][代码]// 是否进入move事件[代码][代码] [代码][代码]isMove: [代码][代码]false[代码][代码],[代码][代码] [代码][代码]// 默认颜色[代码][代码] [代码][代码]defaulteColor: [[代码][代码] [代码][代码]// 奶白[代码][代码] [代码][代码]{ [代码][代码]"color"[代码][代码]: [代码][代码]"#FFFBEC"[代码][代码], [代码][代码]"penActive"[代码][代码]: [代码][代码]"noActive"[代码][代码], [代码][代码]"backActive"[代码][代码]: [代码][代码]"active"[代码] [代码]},[代码][代码] [代码][代码]// 浅蓝[代码][代码] [代码][代码]{ [代码][代码]"color"[代码][代码]: [代码][代码]"#0066FF"[代码][代码], [代码][代码]"penActive"[代码][代码]: [代码][代码]"noActive"[代码][代码], [代码][代码]"backActive"[代码][代码]: [代码][代码]"noActive"[代码][代码]}, [代码][代码] [代码][代码]// 浅绿[代码][代码] [代码][代码]{ [代码][代码]"color"[代码][代码]: [代码][代码]"#00CC66"[代码][代码], [代码][代码]"penActive"[代码][代码]: [代码][代码]"noActive"[代码][代码], [代码][代码]"backActive"[代码][代码]: [代码][代码]"noActive"[代码][代码]},[代码][代码] [代码][代码]// 嫣红[代码][代码] [代码][代码]{ [代码][代码]"color"[代码][代码]: [代码][代码]"#CC0066"[代码][代码], [代码][代码]"penActive"[代码][代码]: [代码][代码]"noActive"[代码][代码], [代码][代码]"backActive"[代码][代码]: [代码][代码]"noActive"[代码][代码]},[代码][代码] [代码][代码]// 橘色[代码][代码] [代码][代码]{ [代码][代码]"color"[代码][代码]: [代码][代码]"#FF6633"[代码][代码], [代码][代码]"penActive"[代码][代码]: [代码][代码]"noActive"[代码][代码], [代码][代码]"backActive"[代码][代码]: [代码][代码]"noActive"[代码][代码]},[代码][代码] [代码][代码]// 粉色[代码][代码] [代码][代码]{ [代码][代码]"color"[代码][代码]: [代码][代码]"#FF9999"[代码][代码], [代码][代码]"penActive"[代码][代码]: [代码][代码]"noActive"[代码][代码], [代码][代码]"backActive"[代码][代码]: [代码][代码]"noActive"[代码][代码]},[代码][代码] [代码][代码]// 鹅黄[代码][代码] [代码][代码]{ [代码][代码]"color"[代码][代码]: [代码][代码]"#FFCC33"[代码][代码], [代码][代码]"penActive"[代码][代码]: [代码][代码]"noActive"[代码][代码], [代码][代码]"backActive"[代码][代码]: [代码][代码]"noActive"[代码][代码]},[代码][代码] [代码][代码]// 黑色[代码][代码] [代码][代码]{ [代码][代码]"color"[代码][代码]: [代码][代码]"#000000"[代码][代码], [代码][代码]"penActive"[代码][代码]: [代码][代码]"active"[代码][代码], [代码][代码]"backActive"[代码][代码]: [代码][代码]"noActive"[代码][代码]},[代码][代码] [代码][代码]// 灰色[代码][代码] [代码][代码]{ [代码][代码]"color"[代码][代码]: [代码][代码]"#D2D2D2"[代码][代码], [代码][代码]"penActive"[代码][代码]: [代码][代码]"noActive"[代码][代码], [代码][代码]"backActive"[代码][代码]: [代码][代码]"noActive"[代码][代码]},[代码][代码] [代码][代码]][代码][代码] [代码][代码]},[代码] [代码] [代码][代码]/**[代码][代码] [代码][代码]* 生命周期函数--监听页面加载[代码][代码] [代码][代码]*/[代码][代码] [代码][代码]onLoad: [代码][代码]function[代码] [代码](options) {[代码][代码] [代码][代码]that = [代码][代码]this[代码][代码];[代码][代码] [代码][代码]// 使用 wx.createContext 获取绘图上下文 context[代码][代码] [代码][代码]context = wx.createCanvasContext([代码][代码]'firstCanvas'[代码][代码]);[代码][代码] [代码][代码]// 初始化画布样式[代码][代码] [代码][代码]initCanvas(that.data.defaulteColor[0].color);[代码][代码] [代码][代码]// 如果緩存中有绘制数据,则绘制画板上[代码][代码] [代码][代码]if[代码] [代码]([代码][代码]""[代码] [代码]!= drawActions && undefined != drawActions && [代码][代码]null[代码] [代码]!= drawActions) {[代码][代码] [代码][代码]// for (var i = 0; i < drawActions.length; i++) {[代码][代码] [代码][代码]// wx.drawCanvas({[代码][代码] [代码][代码]// canvasId: 'firstCanvas',[代码][代码] [代码][代码]// actions: drawActions[i],[代码][代码] [代码][代码]// reserve: true[代码][代码] [代码][代码]// });[代码][代码] [代码][代码]// }[代码][代码] [代码][代码]} [代码][代码]else[代码] [代码]{[代码][代码] [代码][代码]drawActions = [];[代码][代码] [代码][代码]}[代码][代码] [代码][代码]},[代码] [代码] [代码][代码]/**[代码][代码] [代码][代码]* 分享[代码][代码] [代码][代码]*/[代码][代码] [代码][代码]onShareAppMessage: [代码][代码]function[代码] [代码]() {[代码] [代码] [代码][代码]},[代码] [代码] [代码][代码]/**[代码][代码] [代码][代码]* canvasId错误回调[代码][代码] [代码][代码]*/[代码][代码] [代码][代码]canvasIdErrorCallback: [代码][代码]function[代码] [代码](e) {[代码][代码] [代码][代码]console.error(e.detail.errMsg)[代码][代码] [代码][代码]},[代码] [代码] [代码][代码]/**[代码][代码] [代码][代码]* 手指触摸开始[代码][代码] [代码][代码]*/[代码][代码] [代码][代码]canvasStart: [代码][代码]function[代码] [代码](event) {[代码][代码] [代码][代码]isButtonDown = [代码][代码]true[代码][代码];[代码][代码] [代码][代码]arrz.push(0);[代码][代码] [代码][代码]arrx.push(event.changedTouches[0].x);[代码][代码] [代码][代码]arry.push(event.changedTouches[0].y);[代码][代码] [代码][代码]that.setData({ drawing: [代码][代码]true[代码][代码]});[代码][代码] [代码][代码]},[代码] [代码] [代码][代码]/**[代码][代码] [代码][代码]* 手指触摸后移动[代码][代码] [代码][代码]*/[代码][代码] [代码][代码]canvasMove: [代码][代码]function[代码] [代码](event) {[代码][代码] [代码][代码]// 进入move事件[代码][代码] [代码][代码]that.setData({ isMove: [代码][代码]true[代码] [代码]});[代码][代码] [代码][代码]if[代码] [代码](isButtonDown) {[代码][代码] [代码][代码]arrz.push(1);[代码][代码] [代码][代码]arrx.push(event.changedTouches[0].x);[代码][代码] [代码][代码]arry.push(event.changedTouches[0].y);[代码][代码] [代码][代码]}[代码] [代码] [代码][代码]if[代码] [代码](arrx.length > 3) {[代码][代码] [代码][代码]arrx.splice(1, 1);[代码][代码] [代码][代码]arry.splice(1, 1);[代码][代码] [代码][代码]}[代码] [代码] [代码][代码]for[代码] [代码]([代码][代码]var[代码] [代码]i = arrx.length - 2; i < arrx.length; i++) {[代码][代码] [代码][代码]if[代码] [代码](arrz[i] == 0) {[代码][代码] [代码][代码]context.moveTo(arrx[i], arry[i]);[代码][代码] [代码][代码]} [代码][代码]else[代码] [代码]{[代码][代码] [代码][代码]context.lineTo(arrx[i], arry[i]);[代码][代码] [代码][代码]};[代码][代码] [代码][代码]};[代码][代码] [代码][代码]context.stroke();[代码][代码] [代码][代码]// context.draw(true);[代码][代码] [代码][代码]var[代码] [代码]actions = context.getActions();[代码][代码] [代码][代码]console.log(actions);[代码][代码] [代码][代码]wx.drawCanvas({[代码][代码] [代码][代码]canvasId: [代码][代码]'firstCanvas'[代码][代码],[代码][代码] [代码][代码]actions: actions,[代码][代码] [代码][代码]reserve: [代码][代码]true[代码][代码] [代码][代码]});[代码][代码] [代码][代码]drawActions.push(actions);[代码][代码] [代码][代码]},[代码] [代码] [代码][代码]/**[代码][代码] [代码][代码]* 手指触摸动作结束[代码][代码] [代码][代码]*/[代码][代码] [代码][代码]canvasEnd: [代码][代码]function[代码] [代码](event) {[代码][代码] [代码][代码]isButtonDown = [代码][代码]false[代码][代码];[代码][代码] [代码][代码]// 如果没有进入move事件测绘制点[代码][代码] [代码][代码]if[代码] [代码](!that.data.isMove) {[代码][代码] [代码][代码]context.arc(event.changedTouches[0].x, event.changedTouches[0].y, that.data.penWidth / 2, 0, 2 * Math.PI)[代码][代码] [代码][代码]context.setFillStyle(that.data.defaulteColor[that.data.currentPenIndex].color);[代码][代码] [代码][代码]context.fill();[代码][代码] [代码][代码]// context.draw(true);[代码][代码] [代码][代码]var[代码] [代码]actions = context.getActions();[代码][代码] [代码][代码]wx.drawCanvas({[代码][代码] [代码][代码]canvasId: [代码][代码]'firstCanvas'[代码][代码],[代码][代码] [代码][代码]actions: actions,[代码][代码] [代码][代码]reserve: [代码][代码]true[代码][代码] [代码][代码]});[代码][代码] [代码][代码]drawActions.push(actions);[代码][代码] [代码][代码]}[代码][代码] [代码][代码]that.setData({ isMove: [代码][代码]false[代码] [代码]});[代码][代码] [代码][代码]wx.setStorageSync([代码][代码]"drawActions"[代码][代码], drawActions);[代码][代码] [代码][代码]},[代码] [代码] [代码][代码]/**[代码][代码] [代码][代码]* slider滑动监听事件[代码][代码] [代码][代码]*/[代码][代码] [代码][代码]sliderChange: [代码][代码]function[代码] [代码](e) {[代码][代码] [代码][代码]context.setLineWidth(e.detail.value);[代码][代码] [代码][代码]that.setData({[代码][代码] [代码][代码]penWidth: e.detail.value[代码][代码] [代码][代码]});[代码][代码] [代码][代码]},[代码] [代码] [代码][代码]/**[代码][代码] [代码][代码]* 设置橡皮擦[代码][代码] [代码][代码]*/[代码][代码] [代码][代码]setRubber: [代码][代码]function[代码] [代码]() {[代码][代码] [代码][代码]context.setStrokeStyle(that.data.defaulteColor[that.data.currentBackIndex].color);[代码][代码] [代码][代码]// 设置当前状态为正在使用橡皮[代码][代码] [代码][代码]that.setData({[代码][代码] [代码][代码]isPen: [代码][代码]false[代码][代码] [代码][代码]});[代码][代码] [代码][代码]},[代码] [代码] [代码][代码]/**[代码][代码] [代码][代码]* 清空画布[代码][代码] [代码][代码]*/[代码][代码] [代码][代码]clearDraw: [代码][代码]function[代码] [代码]() {[代码][代码] [代码][代码]// 调用清空画布方法[代码][代码] [代码][代码]//clearCanvas();[代码][代码] [代码][代码]wx.showModal({[代码][代码] [代码][代码]title: [代码][代码]'清空画布'[代码][代码],[代码][代码] [代码][代码]content: [代码][代码]'你确定要清除所有内容么?'[代码][代码],[代码][代码] [代码][代码]showCancel: [代码][代码]true[代码][代码],[代码][代码] [代码][代码]cancelText: [代码][代码]'Oh,不'[代码][代码],[代码][代码] [代码][代码]confirmText: [代码][代码]'嗯,是的'[代码][代码],[代码][代码] [代码][代码]confirmColor: [代码][代码]'#9966CC'[代码][代码],[代码][代码] [代码][代码]success: [代码][代码]function[代码][代码](res) {[代码][代码] [代码][代码]if[代码] [代码](res.confirm) {[代码][代码] [代码][代码]// 调用清空画布方法[代码][代码] [代码][代码]clearCanvas();[代码][代码] [代码][代码]}[代码][代码] [代码][代码]}[代码][代码] [代码][代码]})[代码][代码] [代码][代码]},[代码] [代码] [代码][代码]/**[代码][代码] [代码][代码]* 设置画笔颜色[代码][代码] [代码][代码]*/[代码][代码] [代码][代码]setPenColor: [代码][代码]function[代码] [代码](e) {[代码][代码] [代码][代码]// 设置画笔颜色[代码][代码] [代码][代码]context.setStrokeStyle(that.data.defaulteColor[e.currentTarget.dataset.index].color);[代码][代码] [代码][代码]that.setData({[代码][代码] [代码][代码]// 清除之前画笔颜色选中样式[代码][代码] [代码][代码][[代码][代码]"defaulteColor["[代码] [代码]+ that.data.currentPenIndex + [代码][代码]"].penActive"[代码][代码]] : [代码][代码]"noActive"[代码][代码],[代码][代码] [代码][代码]// 设置当前画笔颜色选中样式[代码][代码] [代码][代码][[代码][代码]"defaulteColor["[代码] [代码]+ e.currentTarget.dataset.index +[代码][代码]"].penActive"[代码][代码]]: [代码][代码]"active"[代码][代码],[代码][代码] [代码][代码]// 设置当前选中画笔颜色[代码][代码] [代码][代码]currentPenIndex: e.currentTarget.dataset.index,[代码][代码] [代码][代码]// 设置当前状态为正在绘制[代码][代码] [代码][代码]isPen: [代码][代码]true[代码][代码] [代码][代码]});[代码][代码] [代码][代码]},[代码] [代码] [代码][代码]/**[代码][代码] [代码][代码]* 设置背景颜色[代码][代码] [代码][代码]*/[代码][代码] [代码][代码]setBackColor: [代码][代码]function[代码] [代码](e) {[代码][代码] [代码][代码]// 设置背景颜色[代码][代码] [代码][代码]initCanvas(that.data.defaulteColor[e.currentTarget.dataset.index].color);[代码][代码] [代码][代码]that.setData({[代码][代码] [代码][代码]// 清除当前背景颜色选中样式[代码][代码] [代码][代码][[代码][代码]"defaulteColor["[代码] [代码]+ that.data.currentBackIndex + [代码][代码]"].backActive"[代码][代码]]: [代码][代码]"noActive"[代码][代码],[代码][代码] [代码][代码]// 设置当前背景颜色选中样式[代码][代码] [代码][代码][[代码][代码]"defaulteColor["[代码] [代码]+ e.currentTarget.dataset.index + [代码][代码]"].backActive"[代码][代码]]: [代码][代码]"active"[代码][代码],[代码][代码] [代码][代码]// 设置当前背景颜色[代码][代码] [代码][代码]currentBackIndex: e.currentTarget.dataset.index,[代码][代码] [代码][代码]drawing: [代码][代码]false[代码][代码] [代码][代码]});[代码][代码] [代码][代码]},[代码] [代码] [代码][代码]/**[代码][代码] [代码][代码]* 保存绘制内容为图片到本地[代码][代码] [代码][代码]*/[代码][代码] [代码][代码]saveFile: [代码][代码]function[代码] [代码]() {[代码][代码] [代码][代码]wx.showModal({[代码][代码] [代码][代码]title: [代码][代码]'保存提醒'[代码][代码],[代码][代码] [代码][代码]content: [代码][代码]'你确定要保存当前内容么?'[代码][代码],[代码][代码] [代码][代码]showCancel: [代码][代码]true[代码][代码],[代码][代码] [代码][代码]cancelText: [代码][代码]'Oh,不'[代码][代码],[代码][代码] [代码][代码]confirmText: [代码][代码]'嗯,是的'[代码][代码],[代码][代码] [代码][代码]confirmColor: [代码][代码]'#9966CC'[代码][代码],[代码][代码] [代码][代码]success: [代码][代码]function[代码] [代码](res) {[代码][代码] [代码][代码]if[代码] [代码](res.confirm) {[代码][代码] [代码][代码]// 生成图片[代码][代码] [代码][代码]wx.canvasToTempFilePath({[代码][代码] [代码][代码]canvasId: [代码][代码]'firstCanvas'[代码][代码],[代码][代码] [代码][代码]success: [代码][代码]function[代码] [代码](res) {[代码][代码] [代码][代码]// 获取图片路径数组[代码][代码] [代码][代码]var[代码] [代码]myDrawMood = wx.getStorageSync([代码][代码]"myDrawMood"[代码][代码]);[代码][代码] [代码][代码]// 判断是否已有图片路径数组[代码][代码] [代码][代码]if[代码] [代码]([代码][代码]""[代码] [代码]== myDrawMood || myDrawMood.length <= 0) {[代码][代码] [代码][代码]myDrawMood = [];[代码][代码] [代码][代码]}[代码][代码] [代码][代码]myDrawMood.push(res.tempFilePath);[代码][代码] [代码][代码]wx.setStorageSync([代码][代码]"myDrawMood"[代码][代码], myDrawMood);[代码][代码] [代码][代码]wx.navigateTo({[代码][代码] [代码][代码]url: [代码][代码]'../my/myGallery/myGallery'[代码][代码],[代码][代码] [代码][代码]});[代码][代码] [代码][代码]}[代码][代码] [代码][代码]})[代码][代码] [代码][代码]}[代码][代码] [代码][代码]}[代码][代码] [代码][代码]});[代码][代码] [代码][代码]}[代码][代码]})[代码] [代码]/**[代码][代码] [代码][代码]* 初始化画布[代码][代码] [代码][代码]*/[代码][代码]function[代码] [代码]initCanvas (color) {[代码][代码] [代码][代码]// 清空画布[代码][代码] [代码][代码]context.fillRect(0, 0, canvasw, canvash);[代码][代码] [代码][代码]// 绘制默认画板颜色[代码][代码] [代码][代码]context.beginPath();[代码][代码] [代码][代码]context.setStrokeStyle(that.data.defaulteColor[that.data.currentPenIndex].color);[代码][代码] [代码][代码]context.setLineWidth(that.data.penWidth);[代码][代码] [代码][代码]context.setLineCap([代码][代码]'round'[代码][代码]);[代码][代码] [代码][代码]context.setLineJoin([代码][代码]'round'[代码][代码]);[代码][代码] [代码][代码]context.setFillStyle(color);[代码][代码] [代码][代码]context.fillRect(0, 0, canvasw, canvash);[代码][代码] [代码][代码]context.draw();[代码][代码] [代码][代码]that.setData({[代码][代码] [代码][代码]isPen: [代码][代码]true[代码][代码],[代码][代码] [代码][代码]drawing: [代码][代码]false[代码][代码] [代码][代码]});[代码][代码]}[代码] [代码]/**[代码][代码] [代码][代码]* 清空画布[代码][代码] [代码][代码]*/[代码][代码]function[代码] [代码]clearCanvas () {[代码][代码] [代码][代码]// 清除画布数据[代码][代码] [代码][代码]arrx = [];[代码][代码] [代码][代码]arry = [];[代码][代码] [代码][代码]arrz = [];[代码] [代码] [代码][代码]// 清空画布[代码][代码] [代码][代码]context.fillRect(0, 0, canvasw, canvash);[代码][代码] [代码][代码]// 恢复画布默认状态[代码][代码] [代码][代码]context.beginPath();[代码][代码] [代码][代码]context.setStrokeStyle(that.data.defaulteColor[that.data.currentPenIndex].color);[代码][代码] [代码][代码]context.setLineWidth(that.data.penWidth);[代码][代码] [代码][代码]context.setLineCap([代码][代码]'round'[代码][代码]);[代码][代码] [代码][代码]context.setLineJoin([代码][代码]'round'[代码][代码]);[代码][代码] [代码][代码]context.setFillStyle(that.data.defaulteColor[that.data.currentBackIndex].color);[代码][代码] [代码][代码]context.fillRect(0, 0, canvasw, canvash);[代码][代码] [代码][代码]context.draw();[代码][代码] [代码][代码]that.setData({ [代码][代码] [代码][代码]isPen: [代码][代码]true[代码][代码],[代码][代码] [代码][代码]drawing: [代码][代码]false[代码][代码] [代码][代码]});[代码][代码]}[代码]
2017-11-09 - 怎么触发自定义组件的自定义事件
如下图,我自定义了一个事件myevent,触发的函数时onMyEvent,那么我通过什么样的操作可以触发onMyEvent,百思不得其解。[图片]
2017-11-08 - 请问怎么在canvas上弹出询问框
如下图,我做了一个画画的小程序,清空画布的时候需要询问一下用户,结果canvas层级最高,我的弹出框显示不出来,尴尬的一米,难道要用cove-view模拟一个? 这也太不方便了吧![图片]@官方,求解这个问题!
2017-11-01 - ios输入框输入时唤起键盘会将textarea顶起会将内容输入到textarea
ios 输入框输入时唤起键盘会将textarea顶上来,导致在输入框输入的内容也被输入到了textarea中,这个bug 比较难以复现,下面是我的截图(使用安卓截图的,ios不会) [图片]红框处为textarea[图片]上图红框处为最容易触发cibug的区域,textarea是看不到的,但是在ios中 确确实实会将在姓名或电话的内容赋值到textarea中 已调试许多遍,确保不是变量名写重复或赋值时写错代码,因为当位置不重叠时不会出现此bug。 忘官方能早日还原并修复此bug,再此谢过。
2017-10-26 - 生成小程序二维码接口b 41030
用接口b生成小程序码,总是报“无效的页面”错误,但是该页面确实存在[图片] [图片] 不知道到底是哪里不对? 另外,page 参数为空时,可以生成小程序码了,但是扫描却提示我小程序未发布,但真是情况是小程序已经上线了 [图片] [图片] 求大神指点一二
2017-09-24