慕丝0963956
2017-09-22 15:40
ruti
将滚出画布的小球进行删除处理,使用filter过滤函数方便些,可以边遍历边处理,课程上的是先遍历一边将符合要求的小球和不符合要求的小球以cnt进行分割,然后在遍历一边,逐项删除数组的尾部,使用filter简单易懂。
balls=balls.filter((item)=>{
return item.x+RADIUS>0 && item.x - RADIUS < WINDOW_WIDTH;
});
function updateBalls () {
for (let i = 0; i < balls.length; i++) {
balls[i].x += balls[i].vx;
balls[i].y += balls[i].vy;
balls[i].vy += balls[i].g;
if (balls[i].y >= WINDOW_HEIGHT - RADIUS) {
balls[i].y = WINDOW_HEIGHT - RADIUS;
balls[i].vy = -balls[i].vy * 0.75;
}
/*小球已经出了左边界或者右边界,将小球删掉,防止占用内存*/
if(balls[i].x + RADIUS <= 0 || balls[i].x - RADIUS >= WINDOW_WIDTH) {
balls.splice(i, 1);
}
}
}
应该是有的,等我知道了告诉你
炫丽的倒计时效果Canvas绘图与动画基础
96921 学习 · 1029 问题
相似问题