- 微信小程序有没有什么办法能够简单方便的实现字符串和utf8以及gbk字节流之间的转换功能?
微信小程序好像阉割了TextEncoder / TextDecoder 导致本地实现编码非常痛苦,即使是最简单的字符串转成utf8字节流都只能通过encodeURIComponent间接实现,gbk更是蛋疼, 各位大佬有没有什么简单快捷的方式实现字符串和字节流之间的转换啊 微信的官方能不能放开TextEncoder / TextDecoder的限制啊
2023-03-03 - 小程序在oppo k1手机上无法搜到蓝牙
- 当前 Bug 的表现(可附上截图) - 预期表现 - 复现路径 - 提供一个最简复现 Demo 手机蓝牙能发现设备,我们的APP也能发现设备,微信小程序蓝牙发现不了设备 [图片] [图片] [图片] [代码]wx.onBluetoothDeviceFound([代码][代码]function[代码][代码](res) { [代码][代码]//监听寻找到新设备的事件,这里可以获取到蓝牙设备列表[代码][代码] [代码][代码] [代码][代码]})[代码]我是用的这个事件监听的
2019-04-02 - 用小程序画波形图内存飙升和帧率下降的问题
最近要在小程序里实现波形图的效果,我就使用了 setInterval和ctx.draw(),但是我发现,如果setinterval的频率过高,或者画布上画的东西过多,系统的内存就会飙升,帧率也会大幅度下降,然而我之前用js在html上这样画是没有问题的,作为一名菜鸟,真心的请教下是不是我哪里代码写的不对,具体代码如下 wxml [代码]<[代码][代码]view[代码] [代码]class[代码][代码]=[代码][代码]'canvaDiv'[代码][代码]>[代码] [代码]<[代码][代码]canvas[代码] [代码]class[代码][代码]=[代码][代码]'canvas'[代码] [代码]canvas-id[代码][代码]=[代码][代码]"canvas"[代码][代码]></[代码][代码]canvas[代码][代码]>[代码] [代码]</[代码][代码]view[代码][代码]>[代码] [代码]<[代码][代码]button[代码] [代码]bindtap[代码][代码]=[代码][代码]'start'[代码][代码]>开始测试</[代码][代码]button[代码][代码]>[代码]wxss [代码].canvaDiv {[代码][代码] [代码][代码]margin-bottom[代码][代码]: [代码][代码]5[代码][代码]rpx;[代码][代码]}[代码] [代码].canvas {[代码][代码] [代码][代码]width[代码][代码]: [代码][代码]100%[代码][代码];[代码][代码] [代码][代码]height[代码][代码]: [代码][代码]400px[代码][代码];[代码][代码] [代码][代码]border[代码][代码]: [代码][代码]1[代码][代码]rpx [代码][代码]solid[代码] [代码]#dadada[代码][代码];[代码][代码] [代码][代码]border-bottom[代码][代码]: [代码][代码]1[代码][代码]rpx;[代码][代码]}[代码]js [代码]start: [代码][代码]function[代码][代码](e) {[代码][代码] [代码][代码]console.log([代码][代码]"start"[代码][代码]);[代码][代码] [代码][代码]var[代码] [代码]that = [代码][代码]this[代码][代码];[代码][代码] [代码][代码]var[代码] [代码]size = wx.getSystemInfoSync().windowWidth; [代码][代码]//屏幕宽度,波形图的宽度 [代码][代码] [代码][代码]var[代码] [代码]space = size / 1024; [代码][代码]//x坐标每次移动的长度[代码][代码] [代码][代码]var[代码] [代码]offset = 4; [代码][代码]//每次跨越的数据长度,offset越小interval越小,画面就越流畅,性能消耗就越高[代码][代码] [代码][代码]var[代码] [代码]interval = 1000 / 128 * offset; [代码][代码]//隔几毫秒画一次[代码][代码] [代码][代码]var[代码] [代码]obj = {[代码][代码] [代码][代码]buffer: [代码][代码]new[代码] [代码]Array(),[代码][代码] [代码][代码]index: 0[代码][代码] [代码][代码]}[代码][代码] [代码][代码]for[代码] [代码]([代码][代码]var[代码] [代码]i = 0; i < 2048; i++) {[代码][代码] [代码][代码]obj.buffer.push(Math.random() * 128);[代码][代码] [代码][代码]}[代码][代码] [代码][代码]let ctx = wx.createCanvasContext([代码][代码]"canvas"[代码][代码]);[代码][代码] [代码][代码]setInterval([代码][代码]function[代码][代码]() {[代码][代码] [代码][代码]that.drawWave(space, offset, obj, ctx, 0);[代码][代码] [代码][代码]that.drawWave(space, offset, obj, ctx, 128);[代码][代码] [代码][代码]that.drawWave(space, offset, obj, ctx, 256);[代码][代码] [代码][代码]ctx.stroke();[代码][代码] [代码][代码]ctx.draw();[代码][代码] [代码][代码]if[代码] [代码](obj.buffer.length >= 1024) { [代码][代码]//如果铺满画布了,就移动 [代码][代码] [代码][代码]obj.index += offset; [代码][代码]//计时器每执行一次,索引就偏移一定量 [代码][代码] [代码][代码]}[代码][代码] [代码][代码]if[代码] [代码](obj.buffer.length <= obj.index) {[代码][代码] [代码][代码]obj.index = 0;[代码][代码] [代码][代码]}[代码][代码] [代码][代码]}, interval);[代码][代码] [代码][代码]},[代码][代码] [代码][代码]drawWave: [代码][代码]function[代码][代码](space, offset, obj, ctx, heightOffset) {[代码][代码] [代码][代码]var[代码] [代码]x = 0; [代码][代码]//x开始的位置[代码][代码] [代码][代码]if[代码] [代码](obj.buffer.length > obj.index) {[代码][代码] [代码][代码]ctx.moveTo(x, obj.buffer[obj.index]); [代码][代码]//线的起点 [代码][代码] [代码][代码]for[代码] [代码]([代码][代码]var[代码] [代码]i = 0; i < 1024; i++) { [代码][代码]//1屏8秒128*8=1024个数据[代码][代码] [代码][代码]if[代码] [代码](obj.buffer.length > obj.index + i) {[代码][代码] [代码][代码]ctx.lineTo(x += space, obj.buffer[obj.index + i] + heightOffset);[代码][代码] [代码][代码]}[代码][代码] [代码][代码]}[代码][代码] [代码][代码]}[代码][代码] [代码][代码]}[代码] 是我哪里写的不对吗,求指点
2018-07-04