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

直接用splice()去掉出界的小球

function updateBalls(){


   for( var 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 || balls[i].x>WINDOW_WIDTH+RADIUS){

        balls.splice(i,1);

       }

   }

}


正在回答

3 回答

我也是用这个,测试下来是可以的.保持在310个左右.不过我的跟你的不太一样

function updateBalls(){
	//遍历所有的小球,改变小球的状态
	for(var 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 >= CANVAS_HEIGHT- RADIUS){
			balls[i].y = CANVAS_HEIGHT- RADIUS;
			balls[i].vy = -balls[i].vy*0.75;
		}
		if(balls[i].x+(RADIUS*2) < 0 || balls[i].x+(RADIUS*2)>CANVAS_WIDTH){
			balls.splice(i,1);
		}
	}
	console.log(balls.length);
}


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

我也尝试用了这个方法,但是时间长了,还是不行,还是会剧增,不知道是什么问题,不知道你解决了吗?

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

优化的方法是么?!赞!在哪里可以查到array函数文档啊?

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

举报

0/150
提交
取消

直接用splice()去掉出界的小球

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