У меня есть функция redraw (), предназначенная для остановки текущего цикла draw (), получения новых значений инициализации из DOM и возобновления рисования, как если бы значения были такими, как прежде.
Но "redraw ()" в onchange не может видеть функцию Processing.js redraw (), поэтому изменение значения в поле ввода не имеет никакого эффекта.Если «redraw ()» изменить на «alert ('change!')», Всплывающее окно отобразит «change!», Поэтому мы знаем, что проблема не в onchange, а в невозможности импортировать функцию redraw () изОбработка файла .js.
wolfram-automata.html
<p>Rule: <input onchange="redraw()" id="rule" value="110" size="4" /></p>
<canvas id="sketch" data-processing-sources="wolfram-automata.pjs"></canvas>
<script src="processing-1.1.0.min.js"></script>
wolfram-automata.pjs
processing.setup = function () {
size(bounds, steps);
background(white);
rule = parseInt(document.getElementById("rule").value, 10);
currentState = initState(bounds);
rule = bits(rule);
}
processing.draw = function () {
drawState(currentState, currentStep);
currentState = step(currentState, rule);
currentStep++;
if (currentStep >= steps) { noLoop(); }
}
function redraw() {
println("Redrawing");
noLoop();
currentState = [];
currentStep;
processing.setup();
loop();
}