Как я могу сделать так, чтобы изображение отображалось в javascript (и прокручивалось при увеличении)

#javascript #html #html5-canvas

#javascript #HTML #html5-холст

Вопрос:

Я очень новичок в JavaScript. Я пытаюсь создать базовую бесконечную раннерную игру, но я застрял на одной маленькой проблеме. Мне нужно изображение для печати на моем HTML-холсте, но когда я пытаюсь, ничего не происходит. Я создаю эту игру с помощью базового JavaScript. Нет AJAX / jQuery. Вот мой код и то, что я пробовал.

 //this is my code as of right now for printing images.
function make_base () {
        base_image = new Image();
        base_image.src = 'picture.png'
    }
//draw the image to the canvas 2d context
cc.drawImage(base_image, 0, 0);
  

То, что это делает, ничего не значит. Он не показывает никаких признаков изображения. Вот еще один код, который я получил, например, от w3schools (они потрясающие :))

 //image source by html hidden element
var img = document.getElementById("picture");
cc.drawImage(img, 10, 10);
</script>
<image src="picture.png" id="picture" hidden></image>
  

Это делает то же самое, что и новый код. Абсолютно ничего не показывает. Я не уверен, почему, я пробовал с Google Chrome, Firefox и Internet Explorer. Все они с файлом, загруженным на мой сайт, и с file:///c:/users/name/desktop/js/one.html . По какой-то странной причине на холсте ничего не отображается. Я также сказал Chrome всегда использовать JavaScript. Не только это, но и как я могу увеличить его и прокручивать слева направо (я могу добавить блоки / переменные, которые «убивают» / перезапускают проигрыватель)?

Ответ №1:

Вероятно, вам нужно дождаться загрузки изображения, прежде чем пытаться его нарисовать.

 const c = document.querySelector('canvas')
const cc = c.getContext('2d');

drawImage();

function drawImage() {
  const image = new Image();
  image.onload = function() {
    cc.drawImage(image, 0, 0)
  }
  image.src = "//placecage.com/200/300"
}  
 <canvas width="500" height="500"></canvas>  

Кроме того, это <img> не <image> так. Я не проверял это, но некоторые браузеры не позволяют загружать вещи, если вы включены file:// , вам придется развернуть небольшой сервер и обслуживать с localhost него.

Комментарии:

1. Спасибо за ответ! Однако это все еще не работало на моем сайте. Я не знаю, только ли это мой браузер, мой Интернет или мой компьютер в целом. Он работает над фрагментом stackoverflow. Я попробую на другом компьютере (у меня 3). На самом деле, вы ответили, и это сработало, так что спасибо! Я настрою его на свои компьютеры.

2. Обязательно проверьте консоль на наличие ошибок, а также попробуйте настроить небольшой сервер , если вы пытаетесь использовать локальные ресурсы.