js в visual code графика не отображается
Обновляю страницу а экран белый,в чем может быть проблема подскажите пожалуйста
var cvs = document.getElementById("canvas"); var ctx = cvs.getContext("2d"); var bird = new Image(); var bg = new Image(); var fg = new Image(); var pipeUP = new Image(); var pipeBottom = new Image(); bird.src = "img/bird.png"; bg.src = "img/bg.png"; fg.src = "img/fg.png"; pipeBottom.src = "img/pipeBottom.png"; pipeUP.src = "img/pipeUp.png"; function draw(); { ctx.drawImage(bg, 0, 0); } pipeBottom.onload = draw; |
function draw(); {
Прям так и есть или только тут случайно? |
тут случайно ,но изображение не выводить ,все перепробывал
|
Цитата:
|
Что то типа такого надо
function loadImg (img, src) { return new Promise ( (res, rej) => { img.onload = () => res() img.onerror = () => rej() img.src = src }) } var cvs = document.getElementById("canvas"); var ctx = cvs.getContext("2d"); var bird = new Image(); var bg = new Image(); var fg = new Image(); var pipeUP = new Image(); var pipeBottom = new Image(); function draw(); { ctx.drawImage(bg, 0, 0); } let ap = [ loadImg(bird, "img/bird.png"), loadImg(fg, "img/fg.png"), loadImg(pipeUp, "img/pipeUp.png"), // Если тоже нужно ждать ] loadImg(pipeUp, "img/pipeUp.png") .then(() => Promise.allSettled(ap)) .then(() => draw()); |
Цитата:
img.onload = res; |
Я так пишу для однообразия (для себя)
Просто если, вдруг потом выяснится, что лучше промису возвращать какое то значение, то просто подставить его. Например img.onload = () => res(img) img.onerror = () => rej({reason:'load error'}) |
удобнее сразу создавать картинку в loadImg, и резолвить ее в промис
function loadImg (src) { return new Promise ( (res, rej) => { const img = new Image(); img.onload = () => res(img); img.onerror = () => rej(); img.src = src; }); } |
Может и удобнее, но тогда все функции переписывать.
В частности draw Иначе до конкретной картинки bg трудно добраться. К тому же, в случае ошибки, img после allSettled не получить. Там в ответе после rej() будет не img, а {status:'reject', reason:undefined} |
А "моднее" так эту функцию сделать
function loadImg (img, src) { img.src = src return img.decode().finally (() =>img) } |
Часовой пояс GMT +3, время: 08:37. |