Да, это асинхронная загрузка изображений по сравнению с обработкой синхронной загрузки изображений в loadImage.Вам нужно либо использовать объект Processing.Sketch и предварительно загрузить изображение с помощью js, либо пропустить кадры в draw (), сбрасывая их до тех пор, пока значение @ img.loaded не станет истинным.
Я бы создал здесьProcessing.Sketch объект, передавая ваш код как функцию.Этот объект Sketch затем можно использовать для установки различных параметров, добавления изображений в кэш изображений и т. Д. Я не знаю CoffeeScript, поэтому вот способ js:
canvas1_proc = function(ps) {
ps.setup = function() {
ps.noLoop();
ps.size(550, 400);
return this.img = ps.loadImage('1.png');
};
return ps.draw = function() {
return ps.image(this.img, 0, 0);
};
};
var sketch = new Processing.Sketch(canvas1_proc);
sketch.imageCache.add('1.png'); // will kick off a load in the background
var p = new Processing(canvas, sketch); // will wait for imageCache to be ready
Мы ждем, чтобы запустить эскизы, покаimageCache пуст, а затем, когда вы вызываете loadImage () и т. п., мы сначала пытаемся извлечь что-то из этого кэша (в данном случае с помощью URL, 1.png).
Я отправлю файлошибка, чтобы получить это лучше задокументировано.А пока вот код для объекта Processing.Sketch, который также включает в себя доступ ко всем директивам @pjs:
https://github.com/humphd/processing-js/blob/1.2/processing.js#L19328
Поговорите со мной по irc, если вам нужно большепомощь (humm на irc.mozilla.org/processing.js) или в твиттере @humphd.Может быть, вы можете помочь мне написать что-то конкретное об использовании Processing.js с CoffeeScript, поскольку в наши дни это делают очень многие люди:)