关于update 麻烦老师解答 谢谢
来源:6-2 上升到面向对象-炫彩小球小案例
dww1
2022-04-05 22:27:45
Ball.prototype.update=function(){ //位置改变 this.x+=this.dX; this.y-=this.dY; //半径改变 this.r+=0.2; //透明度改变 this.opacity-=0.01; 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'; //当透明度小于0的时候,就需要从数组中删除自己,DOM元素也要删除自己 if(this.opacity<0){ //从数组中删除自己 for(var i=0;i<ballArr.length;i++){ if(ballArr[i]==this){ ballArr.splice(i,1); } } //还要删除自己的dom document.body.removeChild(this.dom); }console.log(this); };
update()每隔20ms更新一次小球 是更新小球的x y r opacity值 鼠标触碰时 会new出来小球 在构造函数Ball执行里面的语句时 do while语句 是只生成一次随机数吗
而小球的 x y值不断产生变化 是因为 每隔20ms update的r的变化 导致 w和h 的变化 来使x y进行变化的 还是说 this.x=this.dx this.y=this.dy 是由do while 一直执行随机数 的this.dx this.dy决定的
1回答
好帮手慕慕子
2022-04-06
同学你好,对于你的问题解答如下:
1、如果生成的随机数this.dX或者this.dY不为0,就不会进入循环,只生成一次随机数,如果两者都为0的话,会进入循环,生成多次随机数,防止dX和dY都是零。所以每次实例化,最终只会得到一个不为零的this.dX或this.dY。
2、x和y值的变化是依赖this.dX和this.dY的,由第一条回答可知,每次实例化,只会得到一个不为零的this.dX或this.dY,可以理解为实例化后得到的dX和dY的值是固定的,每次调用update方法时,在此基础上改变x和y的值,如下:
而设置小球位置的left和top,同时受到this.r和this.x的影响,如下:
祝学习愉快~
相似问题