2008-10-04 54 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。

相关问题