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

时间:2008-10-04 20:17:07

标签: javascript graphics canvas

我正在考虑制作一个具有相当强烈的JavaScript /画布使用率的网站,我一直在关注Processing.js,在我看来,它会使画布操作变得更加容易。有谁知道我不应该使用Processing.js的原因?我知道旧的浏览器将无法使用它,但现在还可以。

5 个答案:

答案 0 :(得分:3)

如果你没有在IE7中工作,那就去吧。我已经在Firefox 3中使用它。这是一种将Silverlight / Flash效果带到页面的光滑方式。

我的预感是像Processing.js这样的库会在快速通道路径上进行更改或升级,因此请准备好在运行时运行并跟上新功能。

答案 1 :(得分:3)

如上所述,Processing.js(包括IE8 beta)不支持IE。我还发现processing.js在性能方面有点慢,而不是使用canvas(特别是如果你使用Processing语言解析字符串,而不是使用javascript API)。

我个人更喜欢使用canvas API而不是处理包装器,因为它让我更有控制力。例如:

处理line()函数实现如下(粗略地):

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////

请注意,每个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();

答案 2 :(得分:2)

它不会简化画布上的绘图。如果您使用画布,它所做的是简化动画任务。如果您正在制作动画并且您不关心完整的浏览器支持,那么请使用Processing.js。如果您没有做动画(例如,如果您正在绘制图表或圆角),则不要添加Processing.js的开销。

无论哪种方式,我建议您学习如何直接使用canvas API。理解canvas api,特别是转换,即使你使用Processing.js也会对你有很大的帮助。

答案 3 :(得分:1)

我会说使用Flash代替。安装Flash的浏览器数量超过了使用processing.js的浏览器数量。此外,你可以从Flash获得更好的性能而不是使用JavaScript(至少现在,尽管有很多项目正在加速JS,但它还有一段距离)

答案 4 :(得分:1)

尝试新的javascript实现p5js p5js.org

哦,为了回应Leo的回答,你实际上不必在处理或p5js中使用功能,还有单独的 beingShape beingPath 的功能类似于canvas api。