2012-05-22 36 views

回答

2

有两种方式由用户经历压低加载时间。首先是使用预编译的草图,这是比较容易的:GitHub库,甚至只是下载使用GitHub的下载按钮(https://github.com/processing-js/processing-js)主分支,然后寻找“./tools/processing-helper.html”文件。这是一个帮助页面,可让您将草图运行或编译到Processing.js使用的JavaScript源代码。您仍然需要将其与Processing一起运行,因为它与提供的API联系在一起,但您可以使用“API only”版本。就拿它生成的代码,在前面加上“VAR mySketch =”,然后做你的网页上:

<script src="processing.api.js"></script> 
<script> 
function whenImGoodAndReady() { 
    var mySketch = (function.....) // generated by Processing.js helper 
    var myCanvas = document.getElementById('mycanvas'); 
    new Processing(myCanvas, mySketch); 
} 
</script> 

只要确保调用加载功能时,顾名思义,你就可以这样做=)

另一种是做后期加载,如果你有一个最初屏幕外的任何草图。

有一个在完全下载的Processing.js一个“懒加载”扩展 - 你可以包括你的页面上,并且它将使草图只有一次他们在视图加载。这样你就不会陷入整个页面加载。

或者,您可以编写一个后台加载程序,与延迟加载扩展执行相同的操作:关闭Processing.init,然后收集表示处理草图的所有脚本/画布元素,然后使用超时加载它们像

var sketchList = []; 

function findSketches() { 
    /* find all script/canvas elements */ 
    for(every of these elements) { 
    sketchList.append({ 
     canvas: <a canvas element>, 
     sourceCode: <the sketch code> 
    }); 
    } 
    // kickstart slowloading 
    slowLoad(); 
} 

function slowLoad() { 
    if(sketchList.length>0) { 
    var sketchData = sketchList.splice(0,1); 
    try { 
     new Processing(sketchData.canvas, sketchData.sourceCode); 
     setTimeout(slowLoad, 15000); // load next sketch in 15 seconds 
    } catch (e) { console.log(e); } 
    } 
} 

这将保持缓慢加载你的草图,直到它用完。

+0

有趣的,但并没有真正回答这个问题。我的页面中只有一个草图,但我想将它预编译为javascript,因此加载时间较短。 – tenpn

+1

如果您分叉github回购,工具目录中有一个“processing-helper.html”,可让您将处理源代码转换为Processing.js使用的JavaScript源代码。您仍然需要将其与Processing一起运行,因为它与提供的API联系在一起,但您可以使用“API only”版本。 –

+0

这个!让你的答案,我会勾选它。 :) – tenpn