Bezier

Source code

'use strict';

'use strict';

class MyGame extends GameObject {
  constructor() {
    super();

    // Set auto resizeable stage
    Black.stage.scaleMode = StageScaleMode.LETTERBOX;
    Black.stage.setSize(500, 500);
  }

  onAdded() {
    this.g = new Graphics();
    this.add(this.g);
  }

  onUpdate() {
    const time = Black.time.now;

    let y1 = 250 + Math.sin(-time * 5) * 200;
    let y2 = 300 + Math.sin(time * 5) * 200;


    let color = ColorHelper.lerpHSV(0x42a5f5, 0xff00ff, (Math.sin(time * 10) + 1) * 0.5);
    let g = this.g;

    g.clear();
    g.lineStyle(18, color, 0.75, 'round');

    g.beginPath();
    g.circle(100, 250, 20);
    g.stroke();

    g.beginPath();
    g.circle(400, 250, 20);
    g.stroke();

    g.beginPath();
    g.moveTo(100, 250);
    g.bezierCurveTo(250, y1, 250, y2, 400, 250);
    g.stroke();
  }
}

var engine = new Engine('game-container', MyGame, CanvasDriver);
engine.start();