为了账号安全,请及时绑定邮箱和手机立即绑定

正在回答

3 回答

将滚出画布的小球进行删除处理,使用filter过滤函数方便些,可以边遍历边处理,课程上的是先遍历一边将符合要求的小球和不符合要求的小球以cnt进行分割,然后在遍历一边,逐项删除数组的尾部,使用filter简单易懂。
balls=balls.filter((item)=>{
return item.x+RADIUS>0 && item.x - RADIUS < WINDOW_WIDTH;
});

2 回复 有任何疑惑可以回复我~
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);
        }
    }
}
3 回复 有任何疑惑可以回复我~
#1

熊出没

感觉这种方式更好理解
2019-08-31 回复 有任何疑惑可以回复我~

应该是有的,等我知道了告诉你

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

balls[cnt++] = balls[i]这个技巧有其他方式代替吗?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信