diff options
| author | s-ol <s-ol@users.noreply.github.com> | 2018-10-18 14:16:10 +0000 |
|---|---|---|
| committer | s-ol <s-ol@users.noreply.github.com> | 2018-10-18 14:16:10 +0000 |
| commit | 8844d29223626240ff99a0cdaccf1ee5a36cb3f6 (patch) | |
| tree | 1740fd0291959aa8d3d0b266158d7eaaa685224d /lib/canvasapp.shared.moon | |
| parent | update dependencies (diff) | |
| download | mmm-8844d29223626240ff99a0cdaccf1ee5a36cb3f6.tar.gz mmm-8844d29223626240ff99a0cdaccf1ee5a36cb3f6.zip | |
towards self-compiling
Diffstat (limited to 'lib/canvasapp.shared.moon')
| -rw-r--r-- | lib/canvasapp.shared.moon | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/lib/canvasapp.shared.moon b/lib/canvasapp.shared.moon new file mode 100644 index 0000000..f05bfec --- /dev/null +++ b/lib/canvasapp.shared.moon @@ -0,0 +1,34 @@ +window = js.global + +class CanvasApp + width: 500 + height: 400 + new: => + @canvas = window.document\createElement 'canvas' + @canvas.width, @canvas.height = @width, @height + @ctx = @canvas\getContext '2d' + @time = 0 + + @canvas.tabIndex = 0 + @canvas\addEventListener 'click', (_, e) -> @click and @click e.offsetX, e.offsetY, e.button + @canvas\addEventListener 'keydown', (_, e) -> @keydown and @keydown e.key, e.code + + lastMillis = window.performance\now! + t = @ + animationFrame = (_, millis) -> + if not @paused + @update (millis - lastMillis) / 1000 + @ctx\resetTransform! + @draw! + window\setTimeout (-> + window\requestAnimationFrame animationFrame + ), 0 + lastMillis = millis + window\requestAnimationFrame animationFrame + + update: (dt) => + @time += dt + +{ + :CanvasApp +} |
