正在回答
4回答
同学你好,使用this设置的属性即可以写在Ball()中又可以写在init()中。以this.x和this.y为例,此处将二者写在Ball中,因为这两个属性的值是需要实例化Ball时传入,如果写在init()中,就需要将Ball中的参数传入到init中,如下图所示:
为了让代码结构更清晰,就将所有的属性设置在了Ball中,然后将与this.dom相关的属性都放在了init中。同学可以适当调整位置,只要代码可以正常运行即可。
祝学习愉快!
好帮手慕鹤
2020-11-04 10:05:22
同学你好,代码修改如下:
代码:
//小球类
function Ball(x, y) {
this.x = x;
this.y = y;
this.r = 20;
this.color = 'red';
//小球x的增量和y的增量
// this.dx = parseInt(Math.random() * 8 - 4);
// this.dy = parseInt(Math.random() * 8 - 4);
this.dx = parseInt(Math.random() * 8) - 4;
this.dy = parseInt(Math.random() * 8) - 4;
this.init();
ballArr.push(this);
}
Ball.prototype.init = function() {
this.dom = document.createElement('div');
this.dom.className = 'ball';
this.dom.style.width = this.r * 2 + 'px';
this.dom.style.height = this.r * 2 + 'px';
this.dom.style.left = this.x - this.r + 'px';
this.dom.style.top = this.y - this.r + 'px';
this.dom.style.backgroundColor = this.color;
document.body.appendChild(this.dom);
};
Ball.prototype.update = function() {
// this.x += 2;
// this.y -= 2;
// 把小球的增量赋给this.x和this.y;
this.x += this.dx;
this.y -= this.dy;
this.dom.style.width = this.r * 2 + 'px';
this.dom.style.height = this.r * 2 + 'px';
this.dom.style.left = this.x - this.r + 'px';
this.dom.style.top = this.y - this.r + 'px';
// 更新的小球的颜色
this.dom.style.backgroundColor = this.color;
};
var ballArr = [];
// new Ball(200, 200);
//视频中小球的坐标是200,600
new Ball(200, 600);
setInterval(function() {
for (var i = 0; i < ballArr.length; i++) {
ballArr[i].update();
}
// 计时器时间调快一点,例如:20
}, 20);
document.onmousemove = function(e) {
var x = e.clientX;
var y = e.clientY;
new Ball(x, y);
};
同学自己试一试哦,祝学习愉快!
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星