雨心圣
2014-09-14 12:58
我对彩色小球的优化做法:
就和判断小球是否落地是一样的做法,在小球超出左右边界的时候,就将这小球从数组里移除。
具体代码:
var b = BALLS[i];
if(b.x > WINDOW_WIDTH ||b.x < 0 ) BALLS.splice(i, 1);
不知道这中方法是否可行?会不会存在什么问题?
如果最外层还有一个循环的话,i变量需要小心的控制,不能使用简单的for( i = 0 ; i < BALLS.length ; i ++ )
想一想,如果运行了BALLS.splice(i, 1),结合i++ 会错过对一个小球的检查。
具体代码是这样的:
//循环更新彩色小球的变化
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;
}
炫丽的倒计时效果Canvas绘图与动画基础
96953 学习 · 1029 问题
相似问题