个人案例
- 关于在组件内部嵌套组件时,wx.canvasToTempFilePath的问题
今天在编写截屏功能时,遇到了一个问题,在百度无果后,我将我遇到的问题写下来,希望有人能帮助解答一下 问题的详细情况是这样的,我有一个组件使用了swiper, 也就是 swiper_item内部有一个组件,该组件有绘制图标的需求,本来使用image是可行的。我有一个组件是这么做,没问题,但是新组件的ICON需要改变一下颜色,于是自己编写了一个icon组件,使用canvas绘制图标的方式,但是canvas绘制的icon在swiper里就失常了,不跟随swiper的移动,自己胡乱显示,很任性, 于是我改变了一下方式,想把绘制的东西截屏到一个 image上, image跟随swiper没有问题,但是截图出问题了,提示 canvas_id为空 但是在外层的组件里面的canvas截图没有问题,唯独组件套组件的话就不行了,ps , this 是有写的,
2019-04-27 - 小程序云数据库同样的方式访问出现问题
[代码]const app = getApp()[代码][代码]const db = wx.cloud.database(); [代码][代码]//数据库[代码][代码]Page({[代码][代码] [代码][代码]data: {[代码] [代码] [代码][代码]},[代码][代码] [代码][代码]onLoad: [代码][代码]function[代码] [代码]() {[代码][代码] [代码][代码]console.log([代码][代码]'同样的访问方式,同样的表名,第二个获取确得到错误,仔细检查了数据库的所有 doc,完全正确'[代码][代码])[代码][代码] [代码][代码]console.log([代码][代码]'https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/devtools.html'[代码][代码])[代码][代码] [代码][代码]db.collection([代码][代码]'FANUCMill'[代码][代码]).doc([代码][代码]'UpdataTime'[代码][代码]).get().then(res => {[代码][代码] [代码][代码]console.log([代码][代码]'集合名字为:FANUCMill'[代码][代码],res.data)[代码][代码] [代码][代码]})[代码][代码] [代码][代码]db.collection([代码][代码]'FANUCLathe'[代码][代码]).doc([代码][代码]'UpdataTime'[代码][代码]).get().then(res => {[代码][代码] [代码][代码]console.log([代码][代码]'集合名字为:FANUCLathe'[代码][代码], res.data)[代码][代码] [代码][代码]})[代码][代码] [代码][代码]},[代码][代码]})[代码]我遇到了一个神奇的问题,不一样名字的两个集合,一个能访问到内部的DOC, 一个访问出错。代码什么都一样,数据库内都右 UpdataTime 的 doc,求官方解答下是什么原因,昨天一晚上都在弄,没有搞定, 需要APPID
2019-04-12 - 组件的数据监听好像无法动作
我在使用文档中推荐的方法来监听组件属性变换时,发现组件的父页面使用setData设置组件的字段值,组件内部监听没有反应,不知道是不是我使用的姿势不对, 父页面: <LineChart pointdata="{{StraightnessList}}"></LineChart> StraightnessList是一个数组,一维, 组件的js文件中: [代码]/**[代码][代码] [代码][代码]* 组件的属性列表[代码][代码] [代码][代码]*/[代码][代码] [代码][代码]properties: {[代码][代码] [代码][代码]pointdata:{[代码][代码] [代码][代码]type:Array,[代码][代码] [代码][代码]value:[],[代码][代码] [代码][代码]observer(newVal, oldVal, changedPath) {[代码][代码] [代码][代码]// 属性被改变时执行的函数(可选),通常 newVal 就是新设置的数据, oldVal 是旧数[代码][代码] [代码][代码]// 新版本基础库不推荐使用这个字段,而是使用 Component 构造器的 observer 字段代替(这样会有更强的功能和更好的性能)[代码][代码] [代码][代码]console.log([代码][代码]'数据改变'[代码][代码],newVal);[代码][代码] [代码][代码]}[代码][代码] [代码][代码]}, [代码][代码]//数据数组[代码][代码]}[代码]我使用推荐的方式,在Component中定义字段! [代码]/**[代码][代码] [代码][代码]* 数据监-听[代码][代码] [代码][代码]*/[代码][代码] [代码][代码]observers:{[代码][代码] [代码][代码]'pointdata'[代码][代码]: [代码][代码]function[代码][代码](pointdata) {[代码][代码] [代码][代码]// 在 numberA 或者 numberB 被设置时,执行这个函数[代码][代码] [代码][代码]console.log([代码][代码]'组件点数据'[代码][代码], pointdata);[代码][代码] [代码][代码]}[代码][代码] [代码][代码]},[代码]我发现下面的log,始终无法输出,而 属性列表中的方法,能很正常的输出,组件内的setData应该是可以的,文档例子中就是在组件内setData,但是在组件父页面 setData,就无效了!
2019-04-07 - 小程序的INPUT组件的输入类型键盘缺少必要按键
在小程序 使用 input表单组件的过程中,其输入类型type本身比较有限,只有4种,而在数字一类的输入中,弹出的键盘缺少必要的数字符号,比如 负号 -, 若要开发者实现自定义的输入键盘,与input的配合并不好,input用多了要疯, - 目前只希望,input弹出的键盘中,如果type是 number 或者 digit,一定要添加 负号-, 同时也希望 输入类型的 type尽量多些,
2019-03-18 - 小程序canvas,draw(true) 与 draw()的性能差异
我在使用小程序canvas的过程中,发现了一个奇怪的现象, canvas的draw(true)与draw()有明显的性能差异,在多次调用draw(true)后,就出现了严重的掉帧,而draw()不会, 为什么会考虑使用 draw(true)来保留绘制的痕迹呢,是因为我的小程序有这个需求,我需要绘制出一条轨迹以呈现给用户, 为什么不考虑使用缓存路径点连线的方式来绘制呢,也是因为可能产生的数据量实在太大, 所以我在这里贴上我的绘制代码,请大师 解惑! OutView.Draw = function (canvas_id, data) { context.save(); context.beginPath(); context.translate(data.canvasWidth/2,data.canvasHeight/2); context.setStrokeStyle(data.PathColor); context.setFillStyle(data.PathColor); context.setLineWidth(2); context.moveTo(LastXYZ.X,0-LastXYZ.Y); context.lineTo(data.X,0-data.Y) context.arc(data.X, 0-data.Y, 1, 0, 2 * Math.PI) context.closePath(); context.stroke(); context.restore(); context.draw(data.RetainContrailState); //关键在这行,用户可以选择看轨迹或者不看轨迹,性能差异明显 LastXYZ = { X: data.X, Y: data.Y, Z: data.Z } }; 我在小程序中调用这段代码,是通过定时器, 约30毫秒每次
2019-03-18 - 能不能增加一个配置,使开发者可以控制屏幕方向
- 需求的场景描述(希望解决的问题) 我有一个页面,它的功能设计在横屏模式下体验最好,但我的其他功能都是在强制竖屏的情况下布局的, 现在唯一可以配置的选项是 监测屏幕旋转重新布局,但这不是最合适的情况,我不想该页面在竖屏下布局 - 希望提供的能力 给页面的JSON添加选项,可以强制控制屏幕布局方向, 最好有全屏化隐藏微信标签栏的能力,因为我想最大化利用屏幕, 有3D应用的需求,期望能出WEDGL组件, 优化CANVAS的性能,能够达到小游戏CANVAS的水准就好了,
2018-12-06 - 我的小程序最近这两天获取云数据库反应超级慢,或者没反应!
- 我的小程序最近这两天获取云数据库反应超级慢,或者没反应!而且随机,有的微信号访问又会很快获得数据----》 从我自己的CDN上获取数据都是非常快的,云上慢一点无所谓但是慢的出奇就有点奇怪了 - 尽可能快的获得数据,呈现给用户, - 复现路径---》随机,跟云服务有关 - 提供一个最简复现 Demo
2018-11-20 - 读取文件乱码的问题
FileSystemManager.readFile(Object object)内部含有中文字符的文件时,文件内容发生乱码,文件格式UTF8, encode utf-8,"<p class="STYLE1" style="background-color: transparent; color: rgb(0, 0, 0); font-family: Microsoft YaHei; font-size: 24px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;"> �������<br/> </p> <p> <img src="https://636e-cnczhu-e54acb-1257960360.tcb.qcloud.la/������ť2.png?sign=dddae4f51654724bfccbda6d809b0e17&t=1541083939"/> </p> <p> <br/> </p>"实际文本文件内容: <p class="STYLE1" style="background-color: transparent; color: rgb(0, 0, 0); font-family: Microsoft YaHei; font-size: 24px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;"> 代码测试<br/> </p> <p> <img src="https://636e-cnczhu-e54acb-1257960360.tcb.qcloud.la/帮助按钮2.png?sign=dddae4f51654724bfccbda6d809b0e17&t=1541083939"/> </p> <p> <br/> </p> 问题代码: wx.cloud.downloadFile({ fileID: 'cloud://cnczhu-e54acb.636e-cnczhu-e54acb/富文本测试.txt', // 文件 ID success: res => { // 返回临时文件路径 console.log(res.tempFilePath) var FileManager= wx.getFileSystemManager(); //console.log(FileManager); FileManager.readFile({ filePath:res.tempFilePath, encoding:'utf8', success:function(data){ //成功时 console.log('文件内容',data); // WxParse.wxParse('aboutHtml', 'html',data.data, that, 5) } });//读取本地文件内 }, fail: console.error })
2018-11-02 - IOS上 canvas无法取得longtap事件
昨天在一个朋友的IOS手机上测试发布的小程序时,发现IOS下, 由 cover-view 组件覆盖的canvas,始终无法触发canvas 绑定的longtap事件,而在所有安卓手机上正常 布局文件: <view> <!-- canvas.wxml --> <canvas style="width: 100vh; height:100vh;" canvas-id="MainView" disable-scroll='true' bindtouchstart="touchstart" bindtouchmove="touchmove" bindtouchend="touchend" bindlongtap="longtap"> <cover-image class="shareImg" bindtap="Exit" src='./image/exit1.png'></cover-image> <cover-view class="share"> <!--cover-image open-type="share" src="./image/defaultIcon.png"/--> <!--cover-image class="shareImg" src='./image/addFriends.png'></cover-image--> <button class='shareButton' open-type='share'>邀请好友</button> </cover-view> </canvas> </view> --------------------------------------------------------------------------------------------------------------------------------- wxs: /**用户手指触摸i */ touchstart:function(e){ board.touchstart(e);//传递触摸事件 }, touchmove:function(e){ board.touchmove(e); }, touchend:function(e){ board.touchend(e); }, longtap:function(e){ board.longtap(e); }
2018-10-24 - 能否将模拟器以标签卡的形式
在使用微信开发者工具中,我发现一个可以改善的地方,就是将模拟器以标签卡的形式固定在页面上,需要看时,操作时在去点开它,有区别于将它分离出来的方式,在笔记本上很有用出,因为大家输入,观察最多的地方依然是代码区域,隐藏模拟器可以让出一大片位置,而且模拟器让边也不可调,完全不需要,底部的log调试信息栏,应当跟随调试以弹出式,可向下隐藏和手动呼出,代码的折叠状态也应当予以记录并在下次打开时保持上次的状态以免代码过长时浏览困难!~~
2018-10-13