Первый вопрос, который нужно задать себе:
Если вы рисуете его несколько раз, скажем, каждые 100 миллисекунд, проблема исчезнет?
Если нет, то «рисование в неправильном порядке» - это то, что вы делаете, а не ошибка асинхронности. Я подозреваю, что это может быть так.
Изображения могут не отрисовываться, но ничто не должно рисоваться в неправильном порядке , если вы правильно выполнили draw
и что вы каждый раз перерисовываете все. Согласно спецификации canvas, вызов drawImage ничего не делает, если изображение не загружено, поэтому неправильная укладка должна быть невозможна, если это не порядок ваших собственных вызовов.
В любом случае вам следует подождать, пока все изображения, которые вы собираетесь использовать, загрузятся, прежде чем вы начнете рисовать. Используйте их события загрузки и / или $(window).load()
или jQuery(document).ready
и т. Д.
Некоторые другие заметки:
- В зависимости от того, насколько интерактивен ваш холст и как работают слои, иногда лучше использовать несколько полотен, уложенных друг на друга, для повышения производительности, особенно если верхний слой изменяется очень мало, а нижний слой меняется часто.
- Если ваш фон представляет собой статический файл, такой как png, установите CSS-фоновое изображение холста для этого изображения, чтобы облегчить рисование для себя.