Я следую инструкциям по коду из раздела «Создание изометрических игр в реальном времени с HTML5, CSS3 и Javascript».К сожалению, в коде, похоже, есть проблемы с отрисовкой изображений с переменными в качестве параметров.
var logoImg = new Image();
// We want to resent the image so that it fills 50% of the browser window
// while maintaining its width/height aspect ratio
var originalWidth = logoImg.width;
logoImg.width = Math.round((50 * document.body.clientWidth) / 100);
logoImg.height = Math.round((logoImg.width * logoImg.height) / originalWidth);
var logo = {
img: logoImg,
x: (canvas.width/2) - (logoImg.width/2),
y: (canvas.height/2) - (logoImg.height/2)
}
logoImg.onload = function () {
ctx.drawImage(logo.img, logo.x, logo.y, logo.img.width, logo.img.height);
}
logoImg.src = 'https://www.html5canvastutorials.com/demos/assets/darth-vader.jpg';
Замена
ctx.drawImage(logo.img, logo.x, logo.y, logo.img.width, logo.img.height);
на
ctx.drawImage(logoImg, 1, 1, 100, 100);
устраняет проблему.Правильно ли я считаю, что поскольку функция onload () вызывается до вычисления переменных, она загружается неправильно?Если да, то как мне правильно загрузить изображение, используя эти переменные?Спасибо.