我已经使用Processing编写了自己的草图,并使用processingjs和ajax将其插入到页面中,如下所示:
我收到了错误提示:
我认为在这一点上尚未加载草图,有回调或适当的方式来运行代码一旦它已经加载了吗?
当在
:
$.getScript("js/libs/processingjs.js", function() {
$('#sketch').each(function() {
Processing.loadSketchFromSources(this, [$(this).data('processing-sources')]);
});
});
这里是#sketch
所指的画布:
<canvas data-processing-sources="first-sketch.pde" id='sketch'></canvas>
这个可以实现,但我也想使用Javascript与草图进行交互。当我在我的(firebug)控制台输入以下内容时,一切运行良好:
var sketch = Processing.getInstanceById('sketch');
sketch.addTweet(30, 30, 100);
(addTweet是sketch的一个函数,只有在sketch加载后才能使用) 但是当我把它放到javascript里面时:
$.getScript("js/libs/processingjs.js", function() {
$('#sketch').each(function() {
Processing.loadSketchFromSources(this, [$(this).data('processing-sources')]);
var sketch = Processing.getInstanceById('sketch');
sketch.addTweet(30, 30, 100);
});
});
我收到了错误提示:
Uncaught TypeError: Cannot call method 'addTweet' of undefined
我认为在这一点上尚未加载草图,有回调或适当的方式来运行代码一旦它已经加载了吗?
当在
script
标签中包含processingjs库并在jQuery.ready上运行代码时,我收到相同的错误。
setInterval
轮询,直到实例不再返回undefined
。 - Justin Bull