изображения холста html5 не отображаются или изображение не загружено

#javascript #image #canvas #load #html5-canvas

#javascript #изображение #холст #загрузить #html5-холст

Вопрос:

я удаляю ссылку по причине авторских прав! .. извините!

Когда вы находитесь в Firefox, загружаются изображения слева (весь макет), после нескольких обновлений в Chrome и Safari они НИКОГДА НЕ отображаются

Я думаю, что это проблема с изображением, не загруженным в память, но я не могу знать, когда все изображения загружены, я событие помещаю сценарий в конец, но не повезло

Итак, вопрос, что нужно сделать, чтобы убедиться, что изображения загружены .. есть ли ошибка в коде JavaScript?

примечание: мне сложно кодировать изображения как base64 для отображения на холсте … возможно ли это или разумно это сделать?

Ответ №1:

На самом деле, вы можете определить, когда все изображения завершили загрузку. Для этого вам просто нужно указать функцию обратного вызова для onload свойства объекта изображения. Итак, в итоге вы получите что-то вроде этого (в дополнение к коду, который у вас уже есть canvas.js ):

 var loaded_images = 0;
var image_objects = [];

// This is called once all the images have finished loading.
function drawOnCanvas() {
    for (var i = 0; i < image_objects.length;   i) {
        ctx.drawImage(image_objects[i], 0, 0); 
    }
}

function handleLoadedImage() {
      loaded_images;

    // Check to see if all the images have loaded.
    if (loaded_images == 7) {
        drawOnCanvas();
    }
}

document.ready = function() {
    for (var i=0;i<myimages.length;i  ) {
        var tempimage = new Image();
        tempimage.src= myimages[i];
        tempimage.onload = handleLoadedImage;
        image_objects[i] = tempimage;
    }
}
  

Ключевая концепция заключается в том, что вы отслеживаете количество изображений, которые завершили загрузку. Как только все изображения будут загружены, вы знаете, что можете рисовать на холсте.