美文网首页
用面向对象写碰撞的小球

用面向对象写碰撞的小球

作者: 可乐_d001 | 来源:发表于2017-10-31 20:38 被阅读0次

创建小球对象的构造函数
function Boll(wh){
//随机产生小球的宽高
var wh = randFn(20,50)
//设置宽高属性和属性值
this.width = wh;
this.height = wh;
//设置小球诞生点的坐标属性
this.top = randFn(0,document.body.offsetHeight-wh)+'px
this.left = randFn(0,document.body.offsetWidth-wh)+'px
// // 设置小球背影颜色的随机数
// rgba(255,255,155,0.5)
this.color = 'rgba(' + randFn(0, 255) + ',' + randFn(0, 255) + ',' + randFn(0, 255) + ',' + Math.random() + ')';
//设置小球移动速度的属性
this.speedX = randFn(-10,10);
this.speedY = randFn(-10,10)
//设置保存小球标签的属性
this.div = document.createElement('div');

}

// 原型方法:绘制小球(配置div标签的相关css样式,然后把标签拼接进文档流)
//因为这些样式都是一样的,所以可以放在原型里
Boll.prototype.draw = function () {

                this.div.className = 'boll';

                this.div.style.width = this.width + 'px';
                this.div.style.height = this.height + 'px';

                this.div.style.top = this.top;
                this.div.style.left = this.left;

                this.div.style.backgroundColor = this.color;

                // 把配置好的节点拼接进文档流
                wrap.appendChild(this.div);
            }
     // 原型方法:让小球移动,且碰壁反弹
            Boll.prototype.run = function () {
                // 因为在定时器中使用的this指针是指向window对象的,要在定时器中获取当前操作的小球对象,就必须在定时器外部用变量把当前操作小球对象保存下来,在定时器内部通过该变量获取小球对象
                var self = this;
                setInterval(function () {
                    var tag = self.div;
                    if (tag.offsetLeft + tag.offsetWidth >= wrap.offsetWidth || tag.offsetLeft < 0) {
                        self.speedX *= -1;
                    }

                    if (tag.offsetTop + tag.offsetHeight >= wrap.offsetHeight || tag.offsetTop < 0) {
                        self.speedY *= -1;
                    }

                    tag.style.left = tag.offsetLeft + self.speedX + 'px';
                    tag.style.top = tag.offsetTop + self.speedY + 'px';

                },30)
            }

for (var i = 0; i < 100; i++) {
// 创建小球对象
var boll = new Boll();

                    // 调用对象绘制方法,把小球绘制进文档
                    boll.draw();

                    // 调用小球移动方法
                    boll.run()
                }

相关文章

  • 构造函数&&类--canvas小球碰撞

    1. 构造函数 canvas小球碰撞 2. 类 canvas小球碰撞 有上可以看出,用类写面向对象的方法,...

  • 用面向对象写碰撞的小球

    创建小球对象的构造函数function Boll(wh){//随机产生小球的宽高var wh = randFn(2...

  • Java 小球碰撞

    小球碰撞的关键是 判断小球是否碰撞过:1.当两小球间距小于小球直径时发生碰撞。2.当小球碰到边缘时发生碰撞。

  • 2017-08-14

    面向对象编程用对象的思想去写代码,就是面向对象编程-面向过程-面向对象面向对象编程的特点1.抽象 抽取一样的东西...

  • day-11-pygame的应用

    小球碰撞,大球碰击小球,小球消失

  • js面向对象躁动的小球

    效果图 代码如下: css代码 *{ margin: 0; padding: 0; } /* 设置html和bod...

  • 躁动的小球 面向对象实现

    在HTML里建一个div,id="wrap" css样式 *{ margin:0; padding:0; } bo...

  • 小球碰撞

  • 人生第一个游戏。。。

    没啥写的。。。我就是想记录一下,小球碰撞游戏,用到了碰撞体,灯光,弹力等简单的东西。。。

  • day12-作业

    实现鼠标点击屏幕产生小球,小球自动移动,与屏幕碰撞会反弹。小球之间碰撞,会随机吃掉。 定义部分颜色的模块

网友评论

      本文标题:用面向对象写碰撞的小球

      本文链接:https://www.haomeiwen.com/subject/pgkipxtx.html