aboutsummaryrefslogtreecommitdiffstats
path: root/lib/canvasapp.shared.moon
diff options
context:
space:
mode:
authors-ol <s-ol@users.noreply.github.com>2018-10-18 14:16:10 +0000
committers-ol <s-ol@users.noreply.github.com>2018-10-18 14:16:10 +0000
commit8844d29223626240ff99a0cdaccf1ee5a36cb3f6 (patch)
tree1740fd0291959aa8d3d0b266158d7eaaa685224d /lib/canvasapp.shared.moon
parentupdate dependencies (diff)
downloadmmm-8844d29223626240ff99a0cdaccf1ee5a36cb3f6.tar.gz
mmm-8844d29223626240ff99a0cdaccf1ee5a36cb3f6.zip
towards self-compiling
Diffstat (limited to 'lib/canvasapp.shared.moon')
-rw-r--r--lib/canvasapp.shared.moon34
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
+}