Last active
March 27, 2017 15:49
-
-
Save Aleksey-Danchin/6365f3aaf4a33ef015d80dc8bfa8a660 to your computer and use it in GitHub Desktop.
Left Lever
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
!(function () { | |
class Lever { | |
constructor(data) { | |
const lever = this; | |
lever.canvas = document.getElementById(data.canvasId); | |
lever.context = lever.canvas.getContext('2d'); | |
lever.canvas.width = data.width; | |
lever.canvas.height = data.height; | |
lever.objects = []; | |
lever.registerBase = new Map; | |
lever.register('point', _drawPoint); | |
lever.register('line', _drawLine); | |
} | |
register(typeName, handler) { | |
const lever = this; | |
lever.registerBase.set(typeName, handler); | |
} | |
add(data) { | |
const lever = this; | |
lever.objects.push(data); | |
} | |
draw() { | |
const lever = this; | |
for (const data of lever.objects) { | |
if (data.type && lever.registerBase.has(data.type)) { | |
lever.registerBase.get(data.type)(lever.context, data, lever); | |
} | |
} | |
} | |
clear() { | |
const lever = this; | |
lever.canvas.width = lever.canvas.width; | |
} | |
interval(loop, timeout) { | |
const lever = this; | |
const startMoment = Date.now(); | |
let n = 0; | |
return setInterval(() => loop(Date.now() - startMoment, ++n, lever), timeout); | |
} | |
} | |
window.Lever = Lever; | |
function _drawPoint(context, data, lever) { | |
context.beginPath(); | |
context.arc(data.x, data.y, data.r, 0, 2 * Math.PI, false); | |
context.fillStyle = data.color; | |
context.fill(); | |
} | |
function _drawLine(context, data, lever) { | |
context.beginPath(); | |
context.moveTo(data.x1, data.y1); | |
context.lineTo(data.x2, data.y2); | |
context.stroke(); | |
} | |
})(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment