Как открыть функции Processing.js на HTML-странице? - PullRequest
2 голосов
/ 16 марта 2011

У меня есть функция 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();
}

Ответы [ 2 ]

1 голос
/ 16 марта 2011

Это может быть проблема с областью видимости.Попробуйте явно установить перерисовку в окне.

Вместо:

function redraw() { ...

Попробуйте:

window.redraw = function() { ...
0 голосов
/ 16 марта 2011

Возможно, вам следует сначала включить processing-1.1.0.min.js, поскольку processing не определено внутри wolfram-automata.pjs в этой точке.

<script src="processing-1.1.0.min.js"></script>
<canvas data-processing-sources="wolfram-automata.pjs"></canvas>
...