我使用的是processing.js 1.4.1并且代码如下:
new Processing($('canvas')[0], $('texarea').val());
如何覆盖打印功能(不修改库代码),以便在$('pre')
中显示输出?
我可以覆盖Processing.logger
(4404行中的println使用)但是打印不起作用,直到我运行println并且没有Processing.println
函数。
答案 0 :(得分:2)
这里有一个解释如何在这里做:http://processingjs.org/articles/PomaxGuide.html#interface。 它要求您将javascript绑定到Processing sketch以调用其函数。
这个小提琴可能解释得比描述更好: http://jsfiddle.net/98AsE/
我的解决方案要求javascript方法是'javascript'对象(全局命名空间中为this
)的属性才能工作,否则Processing不会看到它:
this.displayMsg = function(msg){
document.querySelector('#output').innerHTML += msg;
}
之后,覆盖print
和println
应该很容易。
答案 1 :(得分:1)
我发现我可以自己编译和运行处理代码,处理对象的实例有print和println方法(以及所有处理函数):
var sketch = Processing.compile(texarea.val());
var processing = new Processing(canvas[0]);
processing.print = function(str) { output.append('<span>' + str + '</span>'); };
processing.println = function(str) { processing.print(str + '\n'); };
sketch.attach(processing, Processing.prototype); // defaultScope is set to the Processing.prototype
sketch.onLoad(processing);
if (processing.setup) {
processing.setup();
processing.resetMatrix();
sketch.onSetup();
}
if (processing.draw) {
processing.redraw();
}
代码不处理基于第8514行的循环
var executeSketch = function(processing) {