Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/85.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
HTML Javascript-下载_Javascript_Html_Download_Three.js_Base64 - Fatal编程技术网

HTML Javascript-下载

HTML Javascript-下载,javascript,html,download,three.js,base64,Javascript,Html,Download,Three.js,Base64,我已经用three.js实现了一个3d模型,我想在用户点击时下载base64 png图像。我已经这样做了,但我的问题是:我希望下载在1秒后开始,因为我想先将模型的背景颜色从黑色更改为白色。因此,如果下载立即开始,则代码可以工作,但在setTimeout()函数中则不会。以下是它的工作原理: renderer.setClearColor("white"); setTimeout( function(){ window.open(renderer.

我已经用three.js实现了一个3d模型,我想在用户点击时下载base64 png图像。我已经这样做了,但我的问题是:我希望下载在1秒后开始,因为我想先将模型的背景颜色从黑色更改为白色。因此,如果下载立即开始,则代码可以工作,但在setTimeout()函数中则不会。以下是它的工作原理:

    renderer.setClearColor("white");
    setTimeout(
      function(){
            window.open(renderer.domElement.toDataURL("image/png"),"Final");
            renderer.setClearColor("black");
      }
   ,500);
   document.getElementById("bt").download  ="file.png";
   $(this).attr('href',renderer.domElement.toDataURL("image/png"));
这就是不起作用的地方

       renderer.setClearColor("white");    
       setTimeout(
         function(){
            document.getElementById("bt").download="file.png";
            $(this).attr('href',renderer.domElement.toDataURL("image/png"));
            renderer.setClearColor("black");
         }
        ,500); 

为什么需要设置超时来更改背景颜色?您不能在设置背景颜色之后,但在调用toDataUrl之前调用渲染函数吗?为什么需要设置超时来更改背景颜色?您不能在设置背景颜色之后,但在调用toDataUrl之前调用渲染函数吗?