实测,draw(true)久了之后会变卡变慢,这时候调用draw()可以恢复速度。但我这边需求不能调用draw(),还请官方尽量解决一下这个问题
小程序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-06-28