面向对象案例:随机方块

1.创建画布

2.创建工具对象--tools.js

var Tools = {
        getRandom: function(min, max) {
            min = Math.ceil(min);
            max = Math.floor(max);
            return Math.floor(Math.random() * (max - min + 1)) + min;
        }
    }

3.创建box盒子对象--box.js

3.1创建构造函数

function Box(parent,options){...}

3.2 检测输入的对象值

options=options||{}//options 如果有值返回options,如果没有值,返回{}

3.3 设置对象属性

this.backgroundColor = options.backgroundColor || "red";
    this.width = options.width || 20;
    this.height = options.height || 20;
    this.x = options.x || 0;
    this.y = options.y || 0;

3.4 动态创建div标签,并追加到container内

this.div=document.createElement("div");
this.parent.appendChild(this.div);

3.5 设置div的样式

在Box构造函数中调用样式函数
this.init();

/通过原型设置init方法实现随机产生方块对象,并渲染到container上
//样式初始化方法
Box.prototype.init = function() {
        //调取样式,追加到container内
        this.parent.appendChild(this.div);

        //添加样式
        var div = this.div;

        div.style.backgroundColor = this.backgroundColor;
        div.style.width = this.width + "px";
        div.style.height = this.height + "px";
        div.style.position = "absolute";//脱离文档流
        div.style.left = this.x + "px"; //x横坐标
        div.style.top = this.y + "px"; //y纵坐标
    }

3.6 随机生成方块的位置

调用随机生成方块的位置的方法

// 调用随机生成方块的位置
this.random();




//随机生成方块的位置方法
Box.prototype.random = function() {
            //方法一  获取最远距离
            this.x = Tools.getRandom(0, this.parent.offsetWidth-this.div.offsetWidth);
            this.y = Tools.getRandom(0, this.parent.offsetHeight -this.div.offsetHeight);
            /*//方法二  获取最远距离
             * this.x = Tools.getRandom(0, this.parent.offsetWidth / this.width - 1) * this.width;
            this.y = Tools.getRandom(0, this.parent.offsetHeight / this.width - 1) * this.height;*/
            this.div.style.left = this.x + "px";
            this.div.style.top = this.y + "px";
        }

4.生成10个方块,随机生成颜色----main.js

4.1获取div容器

//获取画布
var containerObj = document.getElementById("container");

4.2设置数组存储创建的方块对象

//设置数组存储创建的方块对象     
var arr = [];
//
for(var i = 0; i < 10; i++) {
    var r = Tools.getRandom(0, 255);
    var g = Tools.getRandom(0, 255);
    var b = Tools.getRandom(0, 255);
    //实例化Box对象
    var boxObj = new Box(containerObj, {
        backgroundColor: "rgb(" + r + "," + g + "," + b + ")"
    });
    //把创建好的方块对象,添加到数组中
    arr.push(boxObj);
}

5.设置随机位置,开启定时器----main.js

setInterval(function() { 
    // 随机生成方块的坐标
    for (var j = 0; j< arr.length; j++) {
        arr[j].random();
    }
}, 500);

完整代码:

主页面:




  
  Document
  


  

css:

# container {

  width: 800px;
  height: 600px;
  background-color: lightgray;
  position: relative;

}

创建工具对象--tools.js

 var Tools = {
            getRandom: function(min, max) {
                min = Math.ceil(min);
                max = Math.floor(max);
                return Math.floor(Math.random() * (max - min + 1)) + min;
            }
        }

创建box盒子对象--box.js

function Box(parent, options) {
  options = options || {};
  // 设置对象的属性
  this.backgroundColor = options.backgroundColor || 'red';
  this.width = options.width || 20;
  this.height = options.height || 20;
  this.x = options.x || 0;
  this.y = options.y || 0;

  // 创建对应的div
  this.div = document.createElement('div');
  parent.appendChild(this.div);
  this.parent = parent;

  // 设置div的样式
  this.init();
}

// 初始化div (方块)的样式
Box.prototype.init = function () {
  var div = this.div;
  div.style.backgroundColor = this.backgroundColor;
  div.style.width = this.width + 'px';
  div.style.height = this.height + 'px';
  div.style.left = this.x + 'px';
  div.style.top = this.y + 'px';
  // 脱离文档流
  div.style.position = 'absolute'
}

// 随机生成方块的位置
Box.prototype.random = function () {
  // 父容器的宽度/方块的宽度  总共能放多少个方块
  var x = Tools.getRandom(0, this.parent.offsetWidth / this.width - 1) * this.width;
  var y = Tools.getRandom(0, this.parent.offsetHeight / this.height - 1) * this.height;

  this.div.style.left = x + 'px';
  this.div.style.top = y + 'px';
}

设置随机位置,开启定时器----main.js

// 生成10个方块,随机生成颜色

// 获取容器
var container = document.getElementById('container');

// 数组,存储创建的方块对象
var array = [];
for (var i = 0; i < 10; i++) {
  var r = Tools.getRandom(0, 255);
  var g = Tools.getRandom(0, 255);
  var b = Tools.getRandom(0, 255);

  var box = new Box(container, {
    backgroundColor: 'rgb('+ r +','+ g +','+ b +')'
  });

  // 把创建好的方块对象,添加到数组中
  array.push(box);
}

// 设置随机位置,开启定时器
setInterval(randomBox, 500);

// 页面加载完成,先设置随机位置
randomBox();

function randomBox() {
  // 随机生成方块的坐标
  for (var i = 0; i < array.length; i++) {
    var box = array[i];
    box.random();
  }
}

你可能感兴趣的:(面向对象案例:随机方块)