2008-10-04 25 views
9

我正在考慮製作一個網站,其中包含一些相當強烈的JavaScript/canvas使用情況,我一直在尋找Processing.js,在我看來,它會使畫布的操作更容易。有沒有人知道我爲什麼不應該使用Processing.js?我知道舊版瀏覽器將無法使用它,但現在沒關係。使用John Resig的Processing.js是否合理?

+1

你看過像[Fabric.js](http://fabricjs.com)這樣純的Javascript畫布庫嗎? – kangax 2012-07-18 09:07:59

回答

3

如前所述,Processing.js不支持IE(包括IE8 beta)。與使用畫布相比,我還發現processing.js在性能方面有點慢(特別是如果使用Processing語言解析字符串,而不是使用JavaScript API)。

我個人比較喜歡在處理包裝上使用canvas API,因爲它給了我更多的控制權。例如:

的加工生產線()函數是這樣實現的(大約):

function line (x1, y1, x2, y2) { 
    context.beginPath(); 
    context.moveTo(x1, y1); 
    context.lineTo(x2, y2); 
    context.closePath(); 
    context.stroke(); 
}; 

而且你會使用這樣的(假設你使用的JavaScript暴露的API):

var p = Processing("canvas") 
p.stroke(255) 

////Draw lines.../// 
p.line(0,0,10,10) 
p.line(10,10,20,10) 
//...and so on 
p.line(100,100,200,200) 
////End lines//// 

注意,每一行()調用必須打開和關閉了一條新路,而與畫布API,您可以繪製一個調用beginPath/endPath塊內的所有線路,顯著提高性能:

context.strokeStyle = "#fff"; 
context.beginPath(); 

////Draw lines.../// 
context.moveTo(0, 0); 
context.lineTo(10, 10); 
context.lineTo(20, 10); 
//...so on 
context.lineTo(200, 200); 
////End lines.../// 

context.closePath(); 
context.stroke(); 
+0

當我嘗試了這一點時,許多示例在Chrome,Safari中也不起作用。這應該是固定的。 – Nils 2008-12-11 11:31:44

3

如果你確定它不能在IE7中工作,那就去做吧。我已經在Firefox 3中工作了。這是一種將Silverlight/Flash效果帶入您的頁面的流暢方式。

我的預感是像Processing.js這樣的庫會在快速通道上更改或升級,因此準備好在它們執行時運行並跟上新功能。

1

我會說用閃光代替。安裝Flash的瀏覽器數量多於使用processing.js的瀏覽器數量。另外,與使用JavaScript相比,你會從Flash中獲得更好的性能(至少目前爲止,儘管有很多項目可以加速JS的速度,但還有一些方法可行)

+4

理想情況下,Silverlight等應該全部被(至少事實上)標準化的DOM內容和功能所殺死。 – 2009-07-19 13:06:20

2

它沒有' t可以簡化您的畫布上的繪圖。如果您使用畫布,它所做的就是簡化動畫任務。如果你正在做動畫,並且你不關心完整的瀏覽器支持,那麼使用Processing.js。如果你沒有做動畫(如果你正在製作圖表或圓角),那麼不要增加Processing.js的開銷。

無論哪種方式,我建議您學習如何直接使用畫布API。理解canvas api,特別是轉換,即使使用Processing.js也會對你有很大的幫助。

1

嘗試新的JavaScript實現p5js p5js.org

哦,響應獅子座的回答,你居然沒有用在處理或p5js的功能,有單獨beingShapebeingPath的功能類似於canvas api。

相關問題