慕丝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绘图与动画基础
96746 学习 · 1000 问题
相似问题