【发布时间】:2014-12-27 15:37:17
【问题描述】:
我正在尝试复制这种效果:http://hakim.se/experiments/html5/trail/03/
我有这个作为粒子构造函数:
function Particle(x, y) {
this.x = x;
this.y = y;
this.radius = 4;
this.color = '#f0f';
this.speed = 15;
this.angle = 0;
}
我正在使用这个循环来为所有粒子实例设置动画:
for (var i = 0, len = particles.length; i < len; i++) {
var dx = mouse.x - particles[i].x,
dy = mouse.y - particles[i].y,
angle = Math.atan2(dy, dx);
particles[i].vx = Math.cos(angle) * particles[i].speed;
particles[i].vy = Math.sin(angle) * particles[i].speed;
particles[i].x += particles[i].vx;
particles[i].y += particles[i].vy;
particles[i].draw(ctx);
}
粒子跟随鼠标,但到达光标并开始在其周围闪烁,这不是预期的行为。我想在光标周围转一圈,如示例中所示。有趣的部分是,如果我将particle.speed 设置为30 并将角度添加1000,粒子围绕光标旋转,但速度非常快并且破坏效果...
你可以在这里看到一个活生生的例子:http://codepen.io/gbnikolov/pen/EwafI
欢迎所有建议,提前致谢!
附:我知道指向示例的代码很容易找到,但我对 javascript 比较陌生,而且我不太擅长阅读其他人的代码,也不太了解其背后的逻辑。..
【问题讨论】: