Javascript JS画布分别为网格元素设置动画
我正在使用for循环生成一个六边形网格,我遇到了一些问题Javascript JS画布分别为网格元素设置动画,javascript,html,canvas,particles,Javascript,Html,Canvas,Particles,我正在使用for循环生成一个六边形网格,我遇到了一些问题 for (var i=0; i <= rows; i++) { for (var j=0; j <= cols; j++) { ctx.save(); ctx.translate(0+i*distX, 0+j*distY); drawHexagon(ctx); ctx.fill();
for (var i=0; i <= rows; i++) {
for (var j=0; j <= cols; j++) {
ctx.save();
ctx.translate(0+i*distX, 0+j*distY);
drawHexagon(ctx);
ctx.fill();
ctx.restore();
}
}
for(var i=0;i您的链接应用两种力:
鼠标附近的粒子被排斥。更具体地说,如果粒子中心点靠近鼠标中心点,则粒子将沿两个中心点之间的线排斥
不在鼠标附近的粒子被吸引回到其原始位置。更具体地说,粒子沿着其当前中心点和原始中心点之间的线向其原始中心点移动
数学原理如下:
// Given the mouse centerpoint (mx,my) & particle's centerpoint (px,py)
// calculate the difference between x's & y's
var dx=px-mx;
var dy=py-my;
// You can repel the particle by increasing the
// particle's position by a fraction of dx & dy
px+=dx/100;
py+=dy/100;
// And you can attract the particle by decreasing the
// particle's position by a fraction of dx & dy
px-=dx/100;
py-=dy/100;
以下是带注释的代码和演示(为了便于理解,请删除):
//画布相关变量
var canvas=document.getElementById(“canvas”);
var ctx=canvas.getContext(“2d”);
var cw=画布宽度;
var ch=画布高度;
函数reOffset(){
var BB=canvas.getBoundingClientRect();
offsetX=BB.left;
offsetY=BB.top;
}
var offsetX,offsetY;
reOffset();
onscroll=函数(e){reOffset();}
onresize=函数(e){reOffset();}
ctx.fillStyle='skyblue';
//鼠标相关变量
var PI2=数学PI*2;
var mouseRadius=75;//这是鼠标的影响半径
var mouseRadiusSquared=mouseRadius*mouseRadius;
var mouseIsDown=false;
var-mx,我的;
//定义一组存储在数组中的十六进制对象
var-hexRadius=5;
var=5;
var-hexes=[];
对于(var y=hexRadius;y链接应用2个力:
鼠标附近的粒子被排斥。更具体地说,如果粒子中心点靠近鼠标中心点,则粒子将沿两个中心点之间的线排斥
不在鼠标附近的粒子被吸引回到其原始位置。更具体地说,粒子沿着其当前中心点和原始中心点之间的线向其原始中心点移动
数学原理如下:
// Given the mouse centerpoint (mx,my) & particle's centerpoint (px,py)
// calculate the difference between x's & y's
var dx=px-mx;
var dy=py-my;
// You can repel the particle by increasing the
// particle's position by a fraction of dx & dy
px+=dx/100;
py+=dy/100;
// And you can attract the particle by decreasing the
// particle's position by a fraction of dx & dy
px-=dx/100;
py-=dy/100;
以下是带注释的代码和演示(为了便于理解,请删除):
//画布相关变量
var canvas=document.getElementById(“canvas”);
var ctx=canvas.getContext(“2d”);
var cw=画布宽度;
var ch=画布高度;
函数reOffset(){
var BB=canvas.getBoundingClientRect();
offsetX=BB.left;
offsetY=BB.top;
}
var offsetX,offsetY;
reOffset();
onscroll=函数(e){reOffset();}
onresize=函数(e){reOffset();}
ctx.fillStyle='skyblue';
//鼠标相关变量
var PI2=数学PI*2;
var mouseRadius=75;//这是鼠标的影响半径
var mouseRadiusSquared=mouseRadius*mouseRadius;
var mouseIsDown=false;
var-mx,我的;
//定义一组存储在数组中的十六进制对象
var-hexRadius=5;
var=5;
var-hexes=[];
对于(变量y=hexRadius;可以完美地解释为:)谢谢你!@markE如果是你将另一个问题重定向到这个问题,那么另一个问题的操作不是关于如何做圆点,而是关于如何清除圆点。这个答案并没有解决他的问题。@Blindman67。谢谢你的第二双眼睛!是的,我得出了一个结论…我将撤销dup标志。@markE我回答了他的清除问题问题,并在问题的其余部分引用此答案。感谢撤销,当我看到人们清除每个粒子而不是整个屏幕时,我只需要将它们设置在正确的路径上…哈哈…解释得很好:)谢谢你!@markE如果是你将另一个问题重定向到这个问题,那么另一个问题的操作不是关于如何做圆点,而是关于如何清除圆点。这个答案并没有解决他的问题。@Blindman67。谢谢你的第二双眼睛!是的,我得出了一个结论…我将撤销dup标志。@markE我回答了他的清除问题问题,并引用了这个答案为问题的其余部分。感谢撤销,当我看到人们清除每个粒子而不是整个屏幕时,我只需要将他们设置在正确的路径上…哈哈。。。