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



我正在考虑制作一个使用JavaScript/画布的网站,我一直在研究Processing.js,在我看来,这会让操纵画布变得更加容易。有人知道我不应该使用Processing.js的原因吗?我知道旧的浏览器将无法使用它,但目前还可以。

如前所述,Processing.js不支持IE(包括IE8测试版)。我还发现,与只使用canvas相比,processing.js的性能有点慢(尤其是如果您使用processing语言解析字符串,而不是使用javascript API)。

我个人更喜欢canvas API而不是处理包装器,因为它给了我更多的控制权。例如:

processing line()函数的实现方式大致如下:

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

您可以这样使用它(假设您使用的是javascript-exposed 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();

如果你同意它在IE7中不起作用,那就去做吧。这是一种将Silverlight/Flash效果引入页面的巧妙方法。

我的预感是,像Processing.js这样的库将在快速通道上进行更改或升级,所以做好运行准备,并跟上新功能的步伐。

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

无论哪种方式,我都建议您学习如何直接使用canvas API。即使使用Processing.js.

,了解画布api,尤其是转换,也会对您有很大帮助

我建议使用Flash。安装了Flash的浏览器比使用processing.js的浏览器数量还多。此外,与使用JavaScript相比,Flash的性能会更好(至少目前,尽管有一些项目正在进行中,可以大大加快js的速度,但还有一点差距)

尝试新的javascript实现p5js p5js.org

哦,作为对Leo的回答的回应,你实际上不必在处理或p5js中使用line函数,有类似于canvas api的beingShapebeingPath单独的函数。

最新更新