使用John Resig的Processing.js是否合理?

Fre*_*idt 9 javascript graphics canvas

我正在考虑使用一些相当强烈的JavaScript /画布使用的网站,我一直在看Processing.js,在我看来,这将使操作画布变得更加容易.有谁知道为什么我不应该使用Processing.js?我知道旧的浏览器将无法使用它,但现在还可以.

Leo*_*Leo 3

如前所述,Processing.js(包括 IE8 beta)不支持 IE。我还发现与仅使用画布相比,processing.js 在性能方面有点慢(特别是如果您使用处理语言而不是使用 javascript API 解析字符串)。

与处理包装器相比,我个人更喜欢画布 API,因为它给了我更多的控制权。例如:

处理line()函数的实现是这样的(大致):

function line (x1, y1, x2, y2) {
  context.beginPath();
  context.moveTo(x1, y1);
  context.lineTo(x2, y2);
  context.closePath();
  context.stroke();
};
Run Code Online (Sandbox Code Playgroud)

你可以像这样使用它(假设你使用的是 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////
Run Code Online (Sandbox Code Playgroud)

请注意,每个 line() 调用都必须打开和关闭一个新路径,而使用 canvas 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();
Run Code Online (Sandbox Code Playgroud)

  • 这是一个相当人为的例子,不是吗?在处理中,您可以使用 beginShape()、vertex() 和 endShape() 执行相同的操作。 (3认同)