У меня была такая же проблема.Я использовал почти такой же JS для вас (который я получил из учебника Pomax), и он работал нормально.Однако, когда я добавил следующую директиву предварительной загрузки (для загрузки фона), внезапно моя функция initProcessing перестала работать.
/* @pjs preload="metal_background.jpg"; */
Сообщение об ошибке было таким же: pjs.bindJavascript не является функцией
При отладке я мог видеть, что у объекта pjs действительно не была выставлена функция bindJavaScript, даже если она была объявлена в моем файле PDE.
Оказывается, это былочисто из-за времени ... предварительная загрузка замедлила инициализацию объекта обработки, поэтому во второй раз за цикл 250 мс объект pjs существовал, но еще не имел своей функции bindJavaScript.
IЯ не уверен на 100%, как Processing.js выполняет эту конструкцию объекта, но в этом случае простым решением было просто проверить, действительно ли был определен bindJavaScript!Я изменил свой код на следующее:
var bound = false;
function initProcessing() {
var pjs = Processing.getInstanceById('mySketchId');
if(pjs != null) {
if(typeof(pjs.bindJavaScript) == "function") {
pjs.bindJavaScript(this);
bound = true;
}
}
if(!bound) setTimeout(initProcessing, 250);
}
После этого все заработало!