2012-05-22 37 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