来源:5-1 性能优化

雨心圣

2014-09-14 12:58

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

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

具体代码:

var b = BALLS[i];

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

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

写回答 关注

3回答

  • l1uyub0b0b0
    2014-09-14 17:27:44
    已采纳

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

    2014-09-14 22:01:59

    共 1 条回复 >

  • l1uyub0b0b0
    2014-09-15 16:35:34

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

  • 雨心圣
    2014-09-14 22:01:28

    具体代码是这样的:

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

    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绘图与动画基础

学习HTML5中最激动人心的技术Canvas,彻底释放自己的创造力

96953 学习 · 1029 问题

查看课程

相似问题

回答 1

回答 2

回答 3

回答 2