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

我对彩色小球的优化做法:

就和判断小球是否落地是一样的做法,在小球超出左右边界的时候,就将这小球从数组里移除。

具体代码:

var b = BALLS[i];

if(b.x > WINDOW_WIDTH ||b.x < 0 ) BALLS.splice(i, 1);

不知道这中方法是否可行?会不会存在什么问题?

正在回答

3 回答

如果最外层还有一个循环的话,i变量需要小心的控制,不能使用简单的for( i = 0 ; i < BALLS.length ; i ++ )


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

雨心圣 提问者

具体代码是这样的: //循环更新彩色小球的变化 for(var i = 0;i < BALLS.length;i++){ var b = BALLS[i]; if(b.x > WINDOW_WIDTH ||b.x < 0 ){ BALLS.splice(i, 1); }else if(b.y >= WINDOW_HEIGHT-b.r){ b.y = WINDOW_HEIGHT-b.r; b.vy = -b.vy*0.75; } b.x += b.vx; b.y += b.vy; b.vy +
2014-09-14 回复 有任何疑惑可以回复我~

想一想,如果运行了BALLS.splice(i, 1),结合i++ 会错过对一个小球的检查。

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

具体代码是这样的:

//循环更新彩色小球的变化

for(var i = 0;i < BALLS.length;i++){

    var b = BALLS[i];

    if(b.x > WINDOW_WIDTH ||b.x < 0 ){

        BALLS.splice(i, 1);

    }else if(b.y >= WINDOW_HEIGHT-b.r){

        b.y = WINDOW_HEIGHT-b.r;

        b.vy = -b.vy*0.75;

    }

    b.x += b.vx;

    b.y += b.vy;

    b.vy += b.g;

}


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

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信