Задача: Я хочу расположить divs по кругу и анимировать радиус. К сожалению, у меня, похоже, какая-то проблема с моими переменными. Попытка понять это с 3 дней. Что я могу сделать, чтобы выбраться из этого затруднительного положения? Я имею в виду, как я могу решить эту проблему «элегантно»?Расположить divs по кругу и радиусу радиуса наружу
Что я пробовал: Я сделал несколько консольных журналов, и все подразумевает, что у javascript есть проблемы с интерпретацией того, что я имею в виду под «этим».
Я также обнаружил, что мне нужно связать параметр внутри requestAnimationFrame, но я не могу представить привязку к каждой переменной и имени функции, поэтому я должен делать что-то неправильно здесь.
Вот JSFiddle: https://jsfiddle.net/Lh23pzvb/4/
Код:
function explodeRocket(obj) {
this.elem = document.getElementsByTagName('div');
this.particle = [];
this.radius = obj.radius;
this.color = ['red', 'yellow', 'cyan', 'orchid']
this.interval = 2 * Math.PI/obj.particles;
this.init = function() {
this.create();
this.blast();
}
this.init();
this.create = function() {
for(var i = 0; i < obj.particles; i++) {
document.body.appendChild(document.createElement('div'));
this.elem[i].style.background = this.color[obj.colorIndex];
this.particle.push(new this.Properties(0, obj.x, obj.y));
this.updatePosition(i);
}
}
this.Properties = function(angle, x, y) {
this.angle = angle;
this.x = x;
this.y = y;
}
this.updatePosition = function(index) {
this.elem[index].style.left = this.particle[index].x + 'px';
this.elem[index].style.top = this.particle[index].y + 'px';
}
this.blast = function() {
for(var i = 0; i < 10 - 1; i++) {
if(this.radius < obj.radiusMax) {
this.radius += 0.2;
}
this.particle[i].x = Math.round(window.innerWidth)/2 + obj.radius * Math.cos(this.particle[i].angle) ;
this.particle[i].y = Math.round(window.innerHeight)/2 + obj.radius * Math.sin(this.particle[i].angle);
this.updatePosition(i);
this.particle[i].angle += this.interval;
}
requestAnimationFrame(this.blast);
}
}
new explodeRocket({
particles: 4, colorIndex: 0, radius: 0, radiusMax: 200, x: 0, y: 0
})
Wow thanks. Это объясняет многое:) – Asperger