Друзья, пытаюсь создать анимацию - эффект движения сквозь коридор. Элементов пусть пока 3. Написала функции появления и увеличения (appearance() и increase()). Но задержка одинакова для всей системы из 3 элементов, а надо, чтобы для каждого следующего было "отсрочка". На ум приходит сделать delay как элемент массива, для каждого элемента свой. Однако setTimeout("...", sfArr[i].t); - не валидно. Как можно это обойти... Заранее большое спасибо.
for(let i = 0; i < SF_COUNT; i++) {
sfArr.push({
x: 10*i,
y: 10*i,
t: 2*i
});
}
function changeSnow() {
context.clearRect(0, 0, canvas.width, canvas.height);
for (let i = 0; i < SF_COUNT; i++) {
snowflake(sfArr[i].x, sfArr[i].y, sfArr[i].t);
}
}
function snowflake(pos_x, pos_y){
context.beginPath();
context.rect(halfX - (pos_x-nom)/2 +100, halfY - (pos_y-nom)/2+50, halfX + pos_x-nom, halfY + pos_y-nom+10);
context.strokeStyle = 'rgba(' + r + ',' + g + ',' + b + ',' + a +')';
context.stroke();
}
function appearance() {
a += 0.3;
setTimeout("appearance()", 100);
changeSnow();
}
function increase() {
nom -= 5;
setTimeout("increase()", 1000);
changeSnow();
}
window.onload = function() {
changeSnow();
appearance()
increase();
}
https://jsfiddle.net/Nata_Hamster/yhjqo811/3/
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости