Canvas 中的随机对象

Random Objects in Canvas

我创建了一个 canvas 并且我想每五秒添加一个随机对象(方形、圆形、矩形..)?

  <body>
    <canvas id="c" width=400" height="400"></canvas>
    <script type="text/javascript">


var canvas = new fabric.Canvas('c');
var rect = new fabric.Rect({
  left: 50,
  top: 50,
  fill: 'green',
  width: 40,
  height: 80
});
var circle = new fabric.Circle({
  radius: 20, 
  fill: 'red', 
  left: 100, 
  top: 100
});
canvas.add(rect);
canvas.add(circle);

    </script>

看看我的 fiddle 示例,我认为这就是您所需要的。

http://jsfiddle.net/tornado1979/w1bg4bdj/

代码是这样的:

 var canvas = new fabric.Canvas('c');
var myObjects = ['circle','square','rectangle','arc'];
var posX;
var posY;

setInterval(function () {

    var pointer = myObjects.length * Math.random();
     posX = canvas.width * Math.random();
     posY = canvas.height * Math.random();

    pointer = Math.round(pointer);

    switch (pointer){
        case 0:
            var circle = new fabric.Circle({
                  radius: 20, 
                  fill: 'red', 
                  left: posX, 
                  top: posY
                });
            canvas.add(circle);
            break;
        case 1:
             var obj = new fabric.Rect({
              left: posX, 
              top: posY,
              fill: 'green',
              width: 40,
              height: 80
            });
            canvas.add(obj);
            break;
        case 2:
            var square = new fabric.Rect({
              left: posX, 
              top: posY,
              fill: 'yellow',
              width: 50,
              height: 50
            });
            canvas.add(square);
            break;
        case 3:
              var arc = new fabric.Circle({
                  radius: 45, 
                  originX:'center',originY:'center',
                  angle: 0,startAngle: 180, endAngle: Math.PI,
                  fill: 'blue', 
                  left: posX, 
                  top: posY
                });
            canvas.add(arc);
            break;
    }
}, 
  1000);