小球运动代码与老师一样写,不知道为什么情况不一样

小球运动代码与老师一样写,不知道为什么情况不一样

http://img1.sycdn.imooc.com//climg/5fa0c409096f46db14710749.jpg

http://img1.sycdn.imooc.com//climg/5fa0c409097f0a1c08590808.jpg

http://img1.sycdn.imooc.com//climg/5fa0c4090920a99b14940739.jpg

http://img1.sycdn.imooc.com//climg/5fa0c409093a95cd09050833.jpg

指针运动出现的不是求,是线条了?


正在回答

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

4回答

同学你好,使用this设置的属性即可以写在Ball()中又可以写在init()中。以this.x和this.y为例,此处将二者写在Ball中,因为这两个属性的值是需要实例化Ball时传入,如果写在init()中,就需要将Ball中的参数传入到init中,如下图所示:

http://img1.sycdn.imooc.com//climg/5fa39d8e0909aae705140206.jpg

为了让代码结构更清晰,就将所有的属性设置在了Ball中,然后将与this.dom相关的属性都放在了init中。同学可以适当调整位置,只要代码可以正常运行即可。

祝学习愉快!

好帮手慕鹤 2020-11-04 10:05:22

同学你好,代码修改如下:

http://img1.sycdn.imooc.com//climg/5fa20c0809eccd2807260334.jpg

http://img1.sycdn.imooc.com//climg/5fa20c1809c55cbc06730558.jpg

http://img1.sycdn.imooc.com//climg/5fa20c2809b56ae106210361.jpg

代码:

​//小球类
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);

};

同学自己试一试哦,祝学习愉快!

好帮手慕鹤 2020-11-03 13:46:06

同学你好,可以按照老师的步骤把代码粘贴上来哦,参考如下:

http://img1.sycdn.imooc.com//climg/5fa0ee490927a3cc12140939.jpg

或者把里面的内容全部删除,把内容粘贴上来哦。

http://img1.sycdn.imooc.com//climg/5fa0ee7509dea96310490910.jpg

同学可以按照老师的步骤,在问答区重新进行提问,老师一定会帮你解决问题的哦。

祝学习愉快!

  • 提问者 慕田峪6263377 #1
    body{ background-color:grey; } .ball{ position: absolute; border-radius: 50%; } </style> </head> <body> <script type="text/javascript"> //小球类 function Ball(x,y){ //属性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.init(); //把自己推入数组,注意这里的this不是类本身,而是实例 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.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';
    2020-11-03 21:45:16
  • 提问者 慕田峪6263377 #2
    }; //把所有的小球实例都放到一个数组中 var ballArr = []; new Ball(200,200); //做一个定时器,负责更新所有的小球实例 setInterval(function(){ //遍历小球数组,调用小球的update方法 for(var i=0;i<ballArr.length;i++){ ballArr[i].update(); } },100); //得到鼠标指针的监听 document.onmousemove = function(e){ //得到鼠标指针的位置 var x = e.clientX; var y = e.clientY; new Ball(x,y); }; </script> </body>
    2020-11-03 21:45:41
  • 提问者 慕田峪6263377 #3
    这里可以黏贴,不知可以不?
    2020-11-03 21:46:45
好帮手慕鹤 2020-11-03 11:04:43

同学你好,建议同学把代码粘贴上来(不要截图),老师根据同学的代码查找问题并修改哦;如果截图的话,老师怕根据同学截图打出来代码并不能跟同学的代码完全一致,不能完全找到同学代码的问题哦。

并且根据同学提供的报错信息中看到,同学的代码中丢失了符号,参考如下:

http://img1.sycdn.imooc.com//climg/5fa0c9130975772906090183.jpg

修改如下:

http://img1.sycdn.imooc.com//climg/5fa0c94309d3752105120075.jpg

祝学习愉快!

  • 提问者 慕田峪6263377 #1
    代码无法粘贴上去,显示不支持ctrl+v,另外那个);老师课程上也是没的,不过应该是要有的,当时我是有的,后来运行不正常就检查,发现老师没有括号,就改了一下。
    2020-11-03 12:13:17
  • 提问者 慕田峪6263377 #2
    要不老师给个邮箱,我发邮件给您
    2020-11-03 12:15:52
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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