有没有办法通过Javascript操纵Processing.js生成的代码?

时间:2009-05-07 22:06:58

标签: javascript canvas processing

我想在解析Processing.js代码之后调用一些函数或改变一些变量。现在,唯一的方法是操作源代码,然后将源重新加载到Processing。

1 个答案:

答案 0 :(得分:1)

我开始怀疑目前这个问题没有直接答案。暂时,我正在做你喜欢的事情。我正在使用Django Web框架。我让Django通过其模板处理程序将每行Processing.js代码写入页面。 Django首先编写HTML脚本元素,然后Processing.js赋值语句定义sketch参数,然后是sketch的body代码,然后Processing.js库函数和类作为特定的sketch要求,然后是关闭脚本标记。我正在循环遍历多个草图并完成循环初始化例程。

使用这个方案,我可以很好地控制HTML,因为Django的模板处理程序允许我控制包含草图和canvas元素的div元素的id和类。这相当于原油动态行为;每次用户POST表单时,草图都会更新。 Python正在读取大量文件,每个文件都包含很多位,这些位在通往浏览器的过程中通过了几手操作,与简单的数据更新相比,这必须减慢速度。

我很喜欢使用由jQuery调解的表单的真正客户端动态行为的可能性。请参阅David Yeiser在Design Intellection上的fascinating post。所以,jQuery可以与Processing.js交谈,这是惊人的,但并不太令人惊讶,因为它们都是JavaScript。我不是专家,但我认为这种技术会发生一些全局命名空间滥用。说到全局命名空间滥用,请查看 Irrational Exuberance ,“Updating Processing.js Graphics via Ajax,”和“Using Javascript to Control Processing”中的这两篇帖子。如果你可以用PHP做到这一点,你可以选择你喜欢的风格。

显然,Processing.js有一个可能对你有用的“内部”AJAX函数。请参阅此cached post,由Google提供。与当前radically edited version相比,仅在几天前发生了变化。因此,Processing.js合作者已经完成了加载草图并将其与画布关联到两行代码的任务,但是加载各种各样的零碎(包括可变数据)的更一般任务是没有播出时间。也许他们正在重写整个AJAX的事情。我想知道p.ajax函数是否可以用于加载和连接一些Processing.js资产,如数据赋值,setup(),draw()以及函数和类,以灵活的方式形成一个完整的草图。

我的CS儿子说我可以使用JavaScript本机API重新编写我的Processing.js代码然后它将是纯JavaScript,并且可以使用普通的脚本标记加载,而不是使用type =“application / processing”加载。他认为我会有更多的灵活性以及使用最小化/混淆的选项。这是ProDevTips的example using JSON。与Django一起使用JSON非常方便。我已经在网上看到了这里和那里的API。它看起来很简单,但我不知道它是否记录在任何地方。你可以在Github选择源代码。否则,我喜欢这种方法。

所以,我没有简明扼要的答案,但我怀疑情况正在迅速发展。最后一种可能性是使用XHR。请参阅此StackOverflow post以及Hyper-Metrix网站上可下载文件的链接。一个着名的Processing.js名为Alistair MacDonald(F1LT3R)的人发布了许多初始化Processing.js草图的方法。他可能会和任何人一样知道如何做我们想做的事。

如果一个消息灵通的人(即Processing.js内幕人士)能够解决这个问题,我会很高兴。