У меня проблема с моим кодом, он не работает, и я не вижу ошибок, которые, по моему мнению, ошибочны, потому что многие гнездования и я установили скобки в неправильном месте. Функция из кода - это анимация в анимации - это некоторые изображения в верхней части холста, и если эти изображения медленно появлялись сверху вниз, как watterfall.i надеюсь, вы сможете понять мое объяснение.
console.log("hey");
var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d'); //ctx = contex
var img = new Image();
img.src="../img/cookie.png";
canvas.width = canvas.scrollWidth;
canvas.height = canvas.scrollHeight;
img.onload = function() {
console.log("Loaded image")
var add = 10;
var id = setInterval(function () {
if (add == 500) {
ctx.clearRect(0, 0, canvas.width, canvas.height)
ctx.beginPath();
ctx.rect(0, 0, 1000, 1000);
ctx.fillStyle = "lightblue";
ctx.fill();
ctx.drawImage(img,0 , 0, 100, 100);
ctx.drawImage(img,100,0, 100, 100);
ctx.drawImage(img,200,0, 100, 100);
ctx.drawImage(img,300,0, 100, 100);
ctx.drawImage(img,400,0, 100, 100);
ctx.drawImage(img,500,0, 100, 100);
ctx.drawImage(img,600,0, 100, 100);
ctx.drawImage(img,700,0, 100, 100);
} else {
ctx.clearRect(0, 0, canvas.width, canvas.height)
ctx.beginPath();
ctx.rect(0, 0, 1000, 1000);
ctx.fillStyle = "lightblue";
ctx.fill();
ctx.drawImage(img,0 , add, 100, 100);
ctx.drawImage(img,100,add, 100, 100);
ctx.drawImage(img,200,add, 100, 100);
ctx.drawImage(img,300,add, 100, 100);
ctx.drawImage(img,400,add, 100, 100);
ctx.drawImage(img,500,add, 100, 100);
ctx.drawImage(img,600,add, 100, 100);
ctx.drawImage(img,700,add, 100, 100);
add++;
}
}, 10)
}
PS: извините, если некоторые ошибки в моем тексте, но я все еще ученик. : D
PPS: спасибо за помощь.
EDIT: Теперь это помогает благодарить за помощь. ** EDit2: ** теперь у меня есть более сложная проблема, код будет только эксплицировать один раз, но он должен полностью отвлечься, если кто-нибудь может мне помочь, я очень danbar.
Я думаю, что все ваши скобки находятся в правильном месте. Большая ошибка, которую я вижу, заключается в том, что ваш оператор if говорит if (add = 1000)
используя single =
вместо double ==
. Это означает, что вы устанавливаете add
1000
в оператор if вместо сравнения.
Edit: Еще одна проблема, с которой вы столкнулись, заключалась в том, что ваше изображение src
определялось в своей onload
, что на самом деле не имеет смысла, поскольку onload
ожидает загрузки src
.
Я сделал jsfiddle здесь, где работает ваш код, проверьте его: https://jsfiddle.net/pjkmwvp6/
Можете ли вы попробовать изменить это?
// Change this
if(add = 1000){
// To this
if(add === 1000){
Чтобы устранить любые сомнения, которые могут возникнуть с помощью скобок, многие редакторы и веб-службы могут выполнять кодовое украшение (ака довольно печать) для вас. Дайте ему Google. Кроме того, один из таких инструментов встроен в Firefox с Shift + F4 "slate", просто вставьте в него свой код и нажмите Ctrl + P.
Я думаю, что вы не загружаете свой образ правильно. Имейте в виду, что установка атрибута src
изображений является тем, что фактически запускает его загрузку. Как и ваш код не может загружать изображение, так как команда, которая устанавливает src
находится внутри обработчика onload
. Положите это.
При работе с анимацией setInterval
не является наилучшей подходящей функцией. Предпочитаете requestAnimationFrame. Его синтаксис очень близок, и у него есть возможности экономии процессора.