个人案例
- 垃圾分类拍照智查
采用智能识别技术,拍照就能识别垃圾分类,再也不用为垃圾分类问题而烦恼。
拍照识别垃圾分类扫码体验
不能,论坛/社区类属于社交大类,只有非个人主体才能发布。
个人主体小程序可以发布论坛类的小程序吗?个人主体小程序可以发布论坛类的小程序吗?
2020-07-29最简单的办法就是加一个锁变量,当请求开始时锁变量锁住,此状态下其他的请求一概不触发,当正在请求的数据返回之后,把锁变量的值打开,此时再进行请求就可以。 data:{ requestLock: flase }, loadData() { const self = this let lock = this.data.requestLock if (!lock) { this.setData({ requestLock: true }) wx.request({ success() { self.setData({ requestLock: false }) } }) } }
使用小程序的onReachBottom的时候如果在数据没加载更新完成,用户又触底?使用小程序的onReachBottom的时候如果在数据没加载更新完成,用户又触底加载,会导致两次加载了一样的数据,甚至用户多触发几次会·多次加载相同的数据,你们怎么处理
2020-06-12理论上是可以的,要使用encodeURIComponent()和decodeURIComponent()
video标签播放视频,视频路径能有中文吗?小程序开发中,视频路径包含中文,上线后能播放么?
2020-06-12建议把你写的代码贴上来看看。
用canvas出海报的问题?1 获取screenHeight,打印出来是896,实际出来的图高度是808 2 同一个代码在两端不同的呈现形式: a. 画一个圆角矩形,两边留了边,在Android上正常,在iOS直接占了全宽; b. 给这个矩形做了alpha值,在iOS上有半透明效果,在Android上不透明. // 保存海报 canvasToImage(){ this.setData({ isHideShare: false, }) let that = this; wx.showLoading({ title: '正在保存图片..', }); setTimeout(function(){ wx.canvasToTempFilePath({ x: that.data.off_x, y: that.data.off_y, width: that.data.canWidth, height: that.data.canHeight, destWidth: that.data.canWidth, destHeight: that.data.canHeight, canvasId: 'shareCanvas', success: function (res) { wx.saveImageToPhotosAlbum({ filePath: res.tempFilePath, success(res) { console.log(res); wx.hideLoading(); wx.showToast({ title: '保存到相册成功', duration: 2500, }) }, fail(res) { console.log(res) wx.showToast({ title: '保存到相册失败', icon: 'fail' }) that.setData({ isHideShare: true, }) }, complete(res) { console.log(res) } }) } }) }, 2000) }, // 绘制分享Canvas drawShareCanvas: function (path) { // 初始化context console.log("drawShareCanvas") let ctx = wx.createCanvasContext('shareCanvas'); console.log("screenWidth = ", this.data.screenWidth) console.log("screenHeight = ", this.data.screenHeight) // 设置位置,大小 let canWidth = this.data.screenWidth * this.data.canRatio; let canHeight = this.data.screenHeight * this.data.canRatio; let off_y = 0; let qrcode_side = 80; let qr_area_height = 90; ctx.setFillStyle('white') ctx.fillRect(0, 0, canWidth, canHeight); // 绘制背景 ctx.setGlobalAlpha(0.6) ctx.drawImage(path, (this.data.bgCanWidth - canWidth) / 2, (this.data.bgCanHeight - canHeight) / 2, canWidth, canHeight, 0 , off_y, canWidth, canHeight); off_y = off_y + 80; ctx.setGlobalAlpha(0.8) // 绘制card this.roundRect(ctx, 20, off_y, canWidth - 40, 220, 5) ctx.setGlobalAlpha(1) // 绘制内容 off_y = off_y + 20; ctx.setFillStyle('#9D9D9D') ctx.setFontSize(24); var titleText = "在你离开学校后忘记了学到的一切, 最后剩下的就是教育。"; this.drawText(ctx, titleText, 35, off_y + 40, 100, canWidth - 75, 24); // 绘制小框框 off_y = off_y - 20 + 220 - 20; ctx.setGlobalAlpha(0.8); this.roundRect(ctx, (canWidth - 160) / 2, off_y, 160, 40, 5) ctx.setGlobalAlpha(1) // 绘制出自谁 ctx.setFillStyle('#9D9D9D') ctx.setFontSize(18); titleText = "-- 爱因斯坦 "; ctx.fillText(titleText, (canWidth - 6 * 18) / 2, off_y + 18 + 4); // 绘制小程序码 ctx.drawImage("../../images/mpcode.png", 30 ,canHeight - 100); // 绘制提示 ctx.setFillStyle('black') ctx.setFontSize(12); titleText = "长按识别小程序码"; ctx.fillText(titleText, 140, canHeight - 100); ctx.draw(); }, /** * * @param {CanvasContext} ctx canvas上下文 * @param {number} x 圆角矩形选区的左上角 x坐标 * @param {number} y 圆角矩形选区的左上角 y坐标 * @param {number} w 圆角矩形选区的宽度 * @param {number} h 圆角矩形选区的高度 * @param {number} r 圆角的半径 */ roundRect(ctx, x, y, w, h, r) { ctx.save() // 开始绘制 ctx.beginPath() // 因为边缘描边存在锯齿,最好指定使用 transparent 填充 // 这里是使用 fill 还是 stroke都可以,二选一即可 ctx.setFillStyle('white') // ctx.setStrokeStyle('transparent') // 左上角 ctx.arc(x + r, y + r, r, Math.PI, Math.PI * 1.5) // border-top ctx.moveTo(x + r, y) ctx.lineTo(x + w - r, y) ctx.lineTo(x + w, y + r) // 右上角 ctx.arc(x + w - r, y + r, r, Math.PI * 1.5, Math.PI * 2) // border-right ctx.lineTo(x + w, y + h - r) ctx.lineTo(x + w - r, y + h) // 右下角 ctx.arc(x + w - r, y + h - r, r, 0, Math.PI * 0.5) // border-bottom ctx.lineTo(x + r, y + h) ctx.lineTo(x, y + h - r) // 左下角 ctx.arc(x + r, y + h - r, r, Math.PI * 0.5, Math.PI) // border-left ctx.lineTo(x, y + r) ctx.lineTo(x + r, y) // 这里是使用 fill 还是 stroke都可以,二选一即可,但是需要与上面对应 ctx.fill() // ctx.stroke() ctx.closePath() // 剪切 ctx.clip() ctx.restore() }, /** * 绘制多行文本 * @param ctx canvas对象 * @param str 文本 * @param leftWidth 距离左侧的距离 * @param initHeight 距离顶部的距离 * @param titleHeight 文本的高度 * @param canvasWidth 文本的宽度 * @param fontSize 字体大小 * @returns {*} */ drawText: function(ctx, str, leftWidth, initHeight, titleHeight, canvasWidth, fontSize) { let lineWidth = 0; let lastSubStrIndex = 0; //每次开始截取的字符串的索引 for (let i = 0; i < str.length; i++) { lineWidth += ctx.measureText(str[i]).width; if (lineWidth > canvasWidth) { ctx.fillText(str.substring(lastSubStrIndex, i), leftWidth, initHeight); //绘制截取部分 initHeight += (fontSize * 3 / 2 + 2); //22为 文字大小20 + 2 lineWidth = (fontSize * 3 / 2 + 2); lastSubStrIndex = i; titleHeight += (fontSize * 3 / 2 + 2); } if (i == str.length - 1) { //绘制剩余部分 ctx.fillText(str.substring(lastSubStrIndex, i + 1), leftWidth, initHeight); } } // 标题border-bottom 线距顶部距离 titleHeight = titleHeight + 10; return titleHeight; }, downloadBackgroundImage: function (url) { console.log("begin draw") var _this = this; var _url = url wx.downloadFile({ url: url, success: function (res) { console.log("begin download ..."); // var path = res.tempFilePath; console.log("res.tempFilePath = ", res.tempFilePath); _this.setData({ tempFilePath: res.tempFilePath }) /**** * * */ wx.getImageInfo({ src: _url, success(res) { console.log(res.width) console.log(res.height) _this.setData({ bgCanWidth: res.width, bgCanHeight: res.height, }) _this.drawShareCanvas(_this.data.tempFilePath); } }) }, fail: function (res) { console.log(res) } }); }
2020-06-01表单组件在页面上不是同层渲染的,原生组件永远处于页面常规元素的最上层,所以为了优化体验,在做一些页面交互的时候,可以先把原生组件隐藏,等交互结束之后再进行显示。
iphone上input placeholder滑动的时候提示语会跟着滑动?iphone上input placeholder滑动的时候提示语会跟着滑动?
2020-06-01这个结构能不能优化下,这个前面的省市区都有现成的选择组件,在移动端能选择的选择,不能选择的才需要填写,这全是input的,这个体验是个人都填不下去。
文本中间如何添加输入框输入内容?<text class="box_title"> 地址:<input>aaaaaaaaaaa</input>省(区、市)_____市(地、州、盟)_____县(市、区、旗)_____乡(镇、街道)_____村(居)委会_____调查小区_____户编号 </text>
2020-06-01用ctx.save()和ctx.restore()来分隔你绘制的上下文,绘制文字相关的样式设置和配置都夹在这两者之间,并保证这部分放在你drawImage之后,这里考虑到有可能用了downloadFile下载图片,把绘制文字的部分也放到downloadFile的回调里面。因为downloadFile是个异步过程。
canvas-2d绘制文字会被图片遮盖要怎么解决?需求:在一张底背景图上加一些文字 现状:先调用drawImage绘制一张图,然后调用fillText,绘制的文字,总是在最底下,被底背景图盖住 [图片]
2020-06-01可以检查下域名的https配置检查一下是否正常。 可以检查下:https://cloud.tencent.com/product/tools
wx.downloadFile 安卓手机 fail url not in domain list?在ios手机 和 开发者工具中 是能够下载文件的 但是在安卓手机上会出现 ail url not in domain list,这是为什么?
2020-06-01要做效果的话,比较好实现的是使用CSS 3d的效果进行实现,具体参考可以看这个库,http://www.turnjs.com/,类似的有很多,不一一列举。主要是了解他们的事件,移植到小程序上就可以了。
如何做小程序电子阅读书?用小程序开发一个电子书城的话,如何做那种看电子书翻页的那种效果呢?
2020-06-01用css的box-shadow属性可以设置出来,直接使用图片也可以。建议用css属性做,可以复用。
这种发光按钮是怎么实现的啊?[图片]就是这个“发布找活”按钮它周围是发光的,应该不是shadow吧。
2020-06-01