对这段代码不是很理解 能不能给个详细注释一下
// 绘制下落的圆形 for(var i=0; i<=10; i++) { if(!circles[i]) { circles[i] = {}; circles[i].radius = Math.floor(Math.random() * 5) + 1; circles[i].y = - circles[i].radius - Math.floor(Math.random() * 10); circles[i].x = i * 60 + Math.floor(Math.random() * 10) - 5; circles[i].vy = Math.floor(Math.random() * 5) + 1; } ctx.beginPath(); ctx.arc(circles[i].x, circles[i].y, circles[i].radius, 0, Math.PI * 2); ctx.fillStyle = "rgba(255, 255, 255, 0.5)"; ctx.fill(); circles[i].y = circles[i].y + circles[i].vy; if(circles[i].y > ctx.canvas.height + circles[i].radius * 2) { circles[i] = undefined; } }
正在回答
同学你好,累加计算理解的没有问题。但是累加在for循环中,循环一次就会累加一次,也就是在一次定时器中会累加11次,下一次定时器中也会累加11次。
祝学习愉快!
同学你好,问题解答如下:
1、定时器在for循环外层,所以是执行一次定时器,就会执行里面的代码,for循环也会全部执行完毕
2、可以参考这个例子,temp变量对比vy
开始a的值为0,在for循环中初始i的值0,第一次循环a和i相加为0,然后和temp相加为3 ,不符合if判断,不执行里面的代码。第二次循环,i的值为1,和a相加为4,再和temp相加为7,满足if条件,a的值初始为0 。第三次循环,i的值为2,和a相加为2,再和temp相加为5,不满足if条件,不执行里面的代码。以上就是第一次定时器内执行的过程。
然后第二次定时器内执行和上面类似,还是同样的,for循环会全部执行完毕。
自己测试理解下,祝学习愉快!
circles[i].radius = Math.floor(Math.random() * 5) + 1;
circles[i].y = - circles[i].radius - Math.floor(Math.random() * 10);
circles[i].x = i * 60 + Math.floor(Math.random() * 10) - 5;
circles[i].vy = Math.floor(Math.random() * 5) + 1;
}
能不能标注一下这几个算法的细节 我不是很理解。另外 不明白代码是如何能让球体运动往下的?视频前面老师教过的运动动画 是使用setinterval 来实现的,这里面没有运用到这个 是如何让球体往下动起来的?
- 参与学习 人
- 提交作业 622 份
- 解答问题 6815 个
微信带火了小程序,也让前端工程师有了更多的展现机会,本阶段带你从移动基础知识的学习到webAPP开发,及小程序开发,让你PC端与移动端两端通吃。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星