老师, 6-2 上升到面向对象-炫彩小球小案例没懂。

老师, 6-2 上升到面向对象-炫彩小球小案例没懂。

1、小球数组推入数组,从数组删除。

​for(var i = 0; i < ballArr.length; i++){
if(ballArr[i] == this){
ballArr.splice(i, 1)
}
}

2、随机数

                this.dX = parseInt(Math.random() * 20) - 10;
                this.dY = parseInt(Math.random() * 20) - 10;
                
                this.color = colorArr[parseInt(Math.random() * colorArr.length)];


正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,可以参考以下思路来理解:

1、小球数组:用于存放小球实例

每一次触发鼠标监听事件,以下代码都会new一个Ball实例,并将其推进ballArr数组中

new Ball(x, y); // 创建实例
ballArr.push(this); // 将实例推进数组

所以页面中有多少个小球,ballArr数组中就会有多少个Ball实例。

但是,当一个小球的透明度小于0的时候,该小球在页面就消失了,此时就需要从数组中删除自己(为了提高性能)

通过for循环遍历ballArr数组,并判断哪个实例是自己,然后调用数组的splice方法删除即可。

for (var i = 0; i < ballArr.length; i++) {
    if (ballArr[i] == this) { // 判断ballArr数组中第几个实例等于this
       ballArr.splice(i, 1); // 删除数组中第i个实例
    }
}

2、随机数

小球在页面中一般是随机运动的(四面八方都会移动),所以需要随机生成水平方向的增量(x增量)和垂直方向的增量(y增量),比如: 

this.dX = parseInt(Math.random() * 20) - 10;

表示水平方向的增量在-10~10之间,因为parseInt(Math.random() * 20)取值为0~20,分别减去10得到结果为-10~10。

同理,小球的颜色也是随机生成的,代码中定义了颜色值数组:

var colorArr = ['#66CCCC', '#CCFF66', '#FF99CC', '#FF6666','#CC3399', '#FF6600'];

从这个数组中随机选择一个颜色作为小球的颜色,此时只需随机获取一个下标值,就可以通过这个下标值来获取到数组中的颜色值,所以使用parseInt(Math.random() * colorArr.length),随机生成0~数组长度-1之间的随机整数作为下标值。

祝学习愉快!

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师