Etch-a-Sketch style sketch w/ Diagonal

In this example below you will see how to do a Etch-a-Sketch style sketch w/ Diagonal with some HTML / CSS and Javascript

Thumbnail
This awesome code was written by AyeAyeHayden, you can see more from this user in the personal repository.
You can find the original code on Codepen.io
Copyright AyeAyeHayden ©
  • HTML
  • CSS
  • JavaScript
<!DOCTYPE html>
<html lang="en" >

<head>
  <meta charset="UTF-8">
  <title>Etch-a-Sketch style sketch w/ Diagonal</title>
  
  
  
      <link rel="stylesheet" href="css/style.css">

  
</head>

<body>

  <canvas id="display"></canvas>
  
  

    <script  src="js/index.js"></script>




</body>

</html>

/*Downloaded from https://www.codeseek.co/AyeAyeHayden/etch-a-sketch-style-sketch-with-diagonal-QyWMXa */
body {
  margin: 0;
  padding: 0;
}

canvas {
  width: 100%;
  height: 100%;
  position: absolute;
  background-image: url(https://s3-us-west-2.amazonaws.com/s.cdpn.io/183082/black-texture.png);
  background-size: 100%;
}

/*Downloaded from https://www.codeseek.co/AyeAyeHayden/etch-a-sketch-style-sketch-with-diagonal-QyWMXa */
(function() {
  //############### Globals ######################
  //##############################################
  var addOrbs, animate, canvas, color, colorScanner, ctx, erase, h, moveFrame, orb, orbCount, orbSize, orbs, resizeCanvas, sizeFactor, w;

  canvas = document.getElementById("display");

  ctx = canvas.getContext("2d");

  w = canvas.width;

  h = canvas.height;

  orbCount = 5;

  orbSize = 10;

  sizeFactor = 200;

  orbs = [];

  color = {};

  moveFrame = parseInt(Math.random() * 300) + 50;

  //############### Classes ######################
  //##############################################
  orb = class orb {
    constructor() {
      this.x = Math.random() * (w - orbSize) + orbSize / 2;
      this.y = Math.random() * (h - orbSize) + orbSize / 2;
      this.x2 = this.x;
      this.y2 = this.y;
      this.moveFrame = parseInt(Math.random() * 300) + 50;
      this.currentFrame = 0;
      this.isMoving = parseInt(Math.random() * 2);
    }

    update() {
      var dx, dy;
      if (!this.isMoving) {
        this.currentFrame++;
        if (this.currentFrame === this.moveFrame) {
          this.x2 = Math.random() * (w - orbSize) + orbSize / 2;
          this.y2 = Math.random() * (h - orbSize) + orbSize / 2;
          this.moveFrame = parseInt(Math.random() * 300) + 50;
          this.currentFrame = 0;
          return this.isMoving = true;
        }
      } else {
        dx = this.x2 - this.x;
        dy = this.y2 - this.y;
        if (Math.abs(dx) > 1 || Math.abs(dy) > 1) {
          this.x += Math.sign(dx) / 2;
          return this.y += Math.sign(dy) / 2;
        } else {
          return this.isMoving = false;
        }
      }
    }

    render() {
      if (this.isMoving) {
        ctx.beginPath();
        ctx.arc(this.x, this.y, orbSize * Math.random(), 0, Math.PI * 2, false);
        ctx.fill();
        return ctx.closePath();
      }
    }

  };

  colorScanner = class colorScanner {
    constructor() {
      this.h = parseInt(Math.random() * 255);
      this.s = 100;
      this.l = 70;
      this.dh = 0;
      this.a = .9;
      ctx.fillStyle = `hsla(${this.h}, ${this.s}%, ${this.l}%,${this.a})`;
      ctx.strokeStyle = `hsla(${this.h}, ${this.s}%, ${this.l}%,${this.a})`;
    }

    updateColors() {
      var ref;
      this.h += this.dh;
      if (!((0 < (ref = this.h) && ref < 255))) {
        this.dh *= -1;
      }
      ctx.fillStyle = `hsla(${this.h}, ${this.s}%, ${this.l}%,${this.a})`;
      return ctx.strokeStyle = `hsla(${this.h}, ${this.s}%, ${this.l}%,${this.a})`;
    }

  };

  
  //################### Helpers #################
  //#############################################
  resizeCanvas = function() {
    canvas.width = window.innerWidth;
    canvas.height = window.innerHeight;
    w = canvas.width;
    h = canvas.height;
    orbSize = parseInt(Math.min(w, h) / sizeFactor);
    return addOrbs();
  };

  addOrbs = function() {
    var i, o, ref, results;
    orbs = [];
    results = [];
    for (o = i = 0, ref = orbCount; (0 <= ref ? i < ref : i > ref); o = 0 <= ref ? ++i : --i) {
      o = new orb();
      results.push(orbs.push(o));
    }
    return results;
  };

  erase = function() {
    ctx.fillStyle = "rgba(0, 0, 0, .05)";
    return ctx.fillRect(0, 0, w, h);
  };

  //################### Main ####################
  //#############################################
  window.onload = function() {
    addEventListener('resize', resizeCanvas, true);
    resizeCanvas(); // also adds initial orbs
    color = new colorScanner;
    return animate();
  };

  animate = function() {
    var i, len, o;
    //erase()
    color.updateColors();
    for (i = 0, len = orbs.length; i < len; i++) {
      o = orbs[i];
      o.update();
      o.render();
    }
    return window.requestAnimationFrame(animate);
  };

}).call(this);

//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiPGFub255bW91cz4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFBQTs7QUFBQSxNQUFBLE9BQUEsRUFBQSxPQUFBLEVBQUEsTUFBQSxFQUFBLEtBQUEsRUFBQSxZQUFBLEVBQUEsR0FBQSxFQUFBLEtBQUEsRUFBQSxDQUFBLEVBQUEsU0FBQSxFQUFBLEdBQUEsRUFBQSxRQUFBLEVBQUEsT0FBQSxFQUFBLElBQUEsRUFBQSxZQUFBLEVBQUEsVUFBQSxFQUFBOztFQUdBLE1BQUEsR0FBUyxRQUFRLENBQUMsY0FBVCxDQUF3QixTQUF4Qjs7RUFDVCxHQUFBLEdBQU0sTUFBTSxDQUFDLFVBQVAsQ0FBa0IsSUFBbEI7O0VBQ04sQ0FBQSxHQUFJLE1BQU0sQ0FBQzs7RUFDWCxDQUFBLEdBQUksTUFBTSxDQUFDOztFQUNYLFFBQUEsR0FBVzs7RUFDWCxPQUFBLEdBQVU7O0VBQ1YsVUFBQSxHQUFhOztFQUNiLElBQUEsR0FBTzs7RUFDUCxLQUFBLEdBQVEsQ0FBQTs7RUFDUixTQUFBLEdBQVksUUFBQSxDQUFTLElBQUksQ0FBQyxNQUFMLENBQUEsQ0FBQSxHQUFnQixHQUF6QixDQUFBLEdBQWdDLEdBWjVDOzs7O0VBZ0JNLE1BQU4sTUFBQSxJQUFBO0lBQ0MsV0FBYSxDQUFBLENBQUE7TUFDWixJQUFDLENBQUEsQ0FBRCxHQUFLLElBQUksQ0FBQyxNQUFMLENBQUEsQ0FBQSxHQUFnQixDQUFDLENBQUEsR0FBSSxPQUFMLENBQWhCLEdBQWdDLE9BQUEsR0FBVTtNQUMvQyxJQUFDLENBQUEsQ0FBRCxHQUFLLElBQUksQ0FBQyxNQUFMLENBQUEsQ0FBQSxHQUFnQixDQUFDLENBQUEsR0FBSSxPQUFMLENBQWhCLEdBQWdDLE9BQUEsR0FBVTtNQUMvQyxJQUFDLENBQUEsRUFBRCxHQUFNLElBQUMsQ0FBQTtNQUNQLElBQUMsQ0FBQSxFQUFELEdBQU0sSUFBQyxDQUFBO01BQ1AsSUFBQyxDQUFBLFNBQUQsR0FBYSxR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Q0FBQSxHQUFpQixVQUExQjtXQUNWLE9BQUEsQ0FBQTtFQU5jOztFQVFmLE9BQUEsR0FBVSxRQUFBLENBQUEsQ0FBQTtBQUNULFFBQUEsQ0FBQSxFQUFBLENBQUEsRUFBQSxHQUFBLEVBQUE7SUFBQSxJQUFBLEdBQU87QUFDUDtJQUFBLEtBQVMsbUZBQVQ7TUFDQyxDQUFBLEdBQUksSUFBSSxHQUFKLENBQUE7bUJBQ0osSUFBSSxDQUFDLElBQUwsQ0FBVSxDQUFWO0lBRkQsQ0FBQTs7RUFGUzs7RUFNVixLQUFBLEdBQVEsUUFBQSxDQUFBLENBQUE7SUFDUCxHQUFHLENBQUMsU0FBSixHQUFnQjtXQUNoQixHQUFHLENBQUMsUUFBSixDQUFhLENBQWIsRUFBZ0IsQ0FBaEIsRUFBbUIsQ0FBbkIsRUFBc0IsQ0FBdEI7RUFGTyxFQXRGUjs7OztFQTJGQSxNQUFNLENBQUMsTUFBUCxHQUFnQixRQUFBLENBQUEsQ0FBQTtJQUNmLGdCQUFBLENBQWlCLFFBQWpCLEVBQTJCLFlBQTNCLEVBQXlDLElBQXpDO0lBQ0EsWUFBQSxDQUFBLEVBREE7SUFFQSxLQUFBLEdBQVEsSUFBSTtXQUNaLE9BQUEsQ0FBQTtFQUplOztFQU1oQixPQUFBLEdBQVUsUUFBQSxDQUFBLENBQUE7QUFFVCxRQUFBLENBQUEsRUFBQSxHQUFBLEVBQUEsQ0FBQTs7SUFBQSxLQUFLLENBQUMsWUFBTixDQUFBO0lBQ0EsS0FBQSxzQ0FBQTs7TUFDQyxDQUFDLENBQUMsTUFBRixDQUFBO01BQ0EsQ0FBQyxDQUFDLE1BQUYsQ0FBQTtJQUZEO1dBR0EsTUFBTSxDQUFDLHFCQUFQLENBQTZCLE9BQTdCO0VBTlM7QUFqR1YiLCJzb3VyY2VzQ29udGVudCI6WyIjIyMjIyMjIyMjIyMjIyMjIEdsb2JhbHMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjI1xuIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyNcblxuY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQgXCJkaXNwbGF5XCJcbmN0eCA9IGNhbnZhcy5nZXRDb250ZXh0IFwiMmRcIlxudyA9IGNhbnZhcy53aWR0aFxuaCA9IGNhbnZhcy5oZWlnaHRcbm9yYkNvdW50ID0gNVxub3JiU2l6ZSA9IDEwXG5zaXplRmFjdG9yID0gMjAwXG5vcmJzID0gW11cbmNvbG9yID0ge31cbm1vdmVGcmFtZSA9IHBhcnNlSW50KE1hdGgucmFuZG9tKCkgKiAzMDApICsgNTBcblxuIyMjIyMjIyMjIyMjIyMjIyBDbGFzc2VzICMjIyMjIyMjIyMjIyMjIyMjIyMjIyNcbiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjXG5jbGFzcyBvcmJcblx0Y29uc3RydWN0b3I6ICgpIC0+XG5cdFx0QHggPSBNYXRoLnJhbmRvbSgpICogKHcgLSBvcmJTaXplKSArIG9yYlNpemUgLyAyXG5cdFx0QHkgPSBNYXRoLnJhbmRvbSgpICogKGggLSBvcmJTaXplKSArIG9yYlNpemUgLyAyXG5cdFx0QHgyID0gQHhcblx0XHRAeTIgPSBAeVxuXHRcdEBtb3ZlRnJhbWUgPSBwYXJzZUludChNYXRoLnJhbmRvbSgpICogMzAwKSArIDUwXG5cdFx0QGN1cnJlbnRGcmFtZSA9IDBcblx0XHRAaXNNb3ZpbmcgPSBwYXJzZUludChNYXRoLnJhbmRvbSgpKjIpXG5cdFx0XG5cdHVwZGF0ZTogLT5cblx0XHRpZiAhQGlzTW92aW5nXG5cdFx0XHRAY3VycmVudEZyYW1lKytcblx0XHRcdGlmIEBjdXJyZW50RnJhbWUgaXMgQG1vdmVGcmFtZVxuXHRcdFx0XHRAeDIgPSBNYXRoLnJhbmRvbSgpICogKHcgLSBvcmJTaXplKSArIG9yYlNpemUgLyAyXG5cdFx0XHRcdEB5MiA9IE1hdGgucmFuZG9tKCkgKiAoaCAtIG9yYlNpemUpICsgb3JiU2l6ZSAvIDJcblx0XHRcdFx0QG1vdmVGcmFtZSA9IHBhcnNlSW50KE1hdGgucmFuZG9tKCkgKiAzMDApICsgNTBcblx0XHRcdFx0QGN1cnJlbnRGcmFtZSA9IDBcblx0XHRcdFx0QGlzTW92aW5nID0gdHJ1ZVxuXHRcdGVsc2Vcblx0XHRcdGR4ID0gKEB4MiAtIEB4KVxuXHRcdFx0ZHkgPSAoQHkyIC0gQHkpXG5cdFx0XHRpZiBNYXRoLmFicyhkeCkgPiAxIG9yIE1hdGguYWJzKGR5KSA+IDEgXG5cdFx0XHRcdEB4ICs9IE1hdGguc2lnbihkeCkvMlxuXHRcdFx0XHRAeSArPSBNYXRoLnNpZ24oZHkpLzJcblx0XHRcdGVsc2Vcblx0XHRcdFx0QGlzTW92aW5nID0gZmFsc2Vcblx0XHRcblx0cmVuZGVyOiAtPlxuXHRcdGlmIEBpc01vdmluZ1xuXHRcdFx0Y3R4LmJlZ2luUGF0aCgpXG5cdFx0XHRjdHguYXJjIEB4LCBAeSwgb3JiU2l6ZSpNYXRoLnJhbmRvbSgpLCAwLCBNYXRoLlBJKjIsIGZhbHNlXG5cdFx0XHRjdHguZmlsbCgpXG5cdFx0XHRjdHguY2xvc2VQYXRoKClcblxuY2xhc3MgY29sb3JTY2FubmVyXG5cdGNvbnN0cnVjdG9yOiAoKSAtPlxuXHRcdEBoID0gcGFyc2VJbnQoTWF0aC5yYW5kb20oKSAqIDI1NSlcblx0XHRAcyA9IDEwMFxuXHRcdEBsID0gNzBcblx0XHRAZGggPSAwXG5cdFx0QGEgPSAuOVxuXHRcdGN0eC5maWxsU3R5bGUgPSBcImhzbGEoI3tAaH0sICN7QHN9JSwgI3tAbH0lLCN7QGF9KVwiXG5cdFx0Y3R4LnN0cm9rZVN0eWxlID0gXCJoc2xhKCN7QGh9LCAje0BzfSUsICN7QGx9JSwje0BhfSlcIlxuXHRcdFxuXHR1cGRhdGVDb2xvcnM6IC0+XG5cdFx0QGggKz0gQGRoXG5cdFx0aWYgISgwIDwgQGggPCAyNTUpXG5cdFx0XHRAZGggKj0gLTFcblx0XHRjdHguZmlsbFN0eWxlID0gXCJoc2xhKCN7QGh9LCAje0BzfSUsICN7QGx9JSwje0BhfSlcIlxuXHRcdGN0eC5zdHJva2VTdHlsZSA9IFwiaHNsYSgje0BofSwgI3tAc30lLCAje0BsfSUsI3tAYX0pXCJcblxuXHRcdFxuIyMjIyMjIyMjIyMjIyMjIyMjIyMgSGVscGVycyAjIyMjIyMjIyMjIyMjIyMjI1xuIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI1xuXG5yZXNpemVDYW52YXMgPSAtPlxuXHRjYW52YXMud2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aFxuXHRjYW52YXMuaGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0XG5cdHcgPSBjYW52YXMud2lkdGggXG5cdGggPSBjYW52YXMuaGVpZ2h0XG5cdG9yYlNpemUgPSBwYXJzZUludChNYXRoLm1pbih3LCBoKSAvIHNpemVGYWN0b3IpXG5cdGFkZE9yYnMoKVxuXHRcbmFkZE9yYnMgPSAtPlxuXHRvcmJzID0gW11cblx0Zm9yIG8gaW4gWzAuLi5vcmJDb3VudF1cblx0XHRvID0gbmV3IG9yYigpXG5cdFx0b3Jicy5wdXNoKG8pXG5cbmVyYXNlID0gLT5cblx0Y3R4LmZpbGxTdHlsZSA9IFwicmdiYSgwLCAwLCAwLCAuMDUpXCJcblx0Y3R4LmZpbGxSZWN0IDAsIDAsIHcsIGhcbiMjIyMjIyMjIyMjIyMjIyMjIyMjIE1haW4gIyMjIyMjIyMjIyMjIyMjIyMjIyNcbiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyNcbndpbmRvdy5vbmxvYWQgPSAtPlxuXHRhZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCByZXNpemVDYW52YXMsIHRydWUpXG5cdHJlc2l6ZUNhbnZhcygpICMgYWxzbyBhZGRzIGluaXRpYWwgb3Jic1xuXHRjb2xvciA9IG5ldyBjb2xvclNjYW5uZXJcblx0YW5pbWF0ZSgpXG5cdFxuYW5pbWF0ZSA9IC0+XG5cdCNlcmFzZSgpXG5cdGNvbG9yLnVwZGF0ZUNvbG9ycygpXG5cdGZvciBvIGluIG9yYnNcblx0XHRvLnVwZGF0ZSgpXG5cdFx0by5yZW5kZXIoKVxuXHR3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGFuaW1hdGUpIl19
//# sourceURL=coffeescript

Comments