Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用智能替代品<;帆布>;Web Worker中的方法?_Javascript_Canvas_Web_Web Worker - Fatal编程技术网

Javascript 使用智能替代品<;帆布>;Web Worker中的方法?

Javascript 使用智能替代品<;帆布>;Web Worker中的方法?,javascript,canvas,web,web-worker,Javascript,Canvas,Web,Web Worker,我正在尝试提高这个JS热图库的绘制速度: 以期让动画发挥作用。其工作原理的简略版本-它将所有数据点(在从未插入DOM的上)绘制为圆-所有半径相同,但字母不同: ctx.shadowColor = ('rgba(255,0,0,'+((count)?(count/me.store.max):'0.1')+')'); ctx.beginPath(); ctx.arc(x - 1000, y - 1000, radius, 0, Math.PI * 2, true); ctx.closePath()

我正在尝试提高这个JS热图库的绘制速度:

以期让动画发挥作用。其工作原理的简略版本-它将所有数据点(在从未插入DOM的
上)绘制为圆-所有半径相同,但字母不同:

ctx.shadowColor = ('rgba(255,0,0,'+((count)?(count/me.store.max):'0.1')+')');
ctx.beginPath();
ctx.arc(x - 1000, y - 1000, radius, 0, Math.PI * 2, true);
ctx.closePath();
ctx.fill();
绘制完所有图像后,它会在画布上运行
getImageData()
,根据alpha为每个像素着色,然后
putImageData()
-将其添加到页面上的最终


毫不奇怪,该操作最密集的部分是绘图部分。我希望能够将这一责任委托给网络工作者,这样我就可以提前渲染未来的帧,而不会影响浏览器中的FPS。但是web工作者没有DOM访问权限,无法创建
标记。有人对解决这个问题有什么好主意吗?有没有什么方法可以在没有画布标记的情况下计算这些像素字母?

不幸的是,目前无法将任何DOM或其他不可转移的对象(如画布)传递给web工作者

但是,您可以将图像数据传递给工作者。工作者可以操纵数据,以模拟渐变等阴影生成,然后将其传递回putImageData()-ing。我不知道那会有多有趣。我知道我很难模仿当前的产品。但是,如果您打算委托给员工,这是我目前的建议

编辑:我指的是艰难的时期

再次编辑:我知道这确实落后了,但您也可以通过只抓取可能受影响的区域来节省一些时间,而不是抓取并替换整个画布

再次编辑:还没有尝试过,但是如果你可以在worker中制作画布,你可以发送指令给它,让它绘制,然后发送回图像