Add realtime keyboard events for game dev

This commit is contained in:
Scott Erickson 2016-08-19 09:44:29 -07:00
parent de739bb6db
commit dbf63e250c

View file

@ -83,6 +83,8 @@ module.exports = Surface = class Surface extends CocoClass
constructor: (@world, @normalCanvas, @webGLCanvas, givenOptions) ->
super()
$(window).on('keydown', @onKeyEvent)
$(window).on('keyup', @onKeyEvent)
@normalLayers = []
@options = _.clone(@defaults)
@options = _.extend(@options, givenOptions) if givenOptions
@ -540,7 +542,13 @@ module.exports = Surface = class Surface extends CocoClass
event.screenPos = @mouseScreenPos if @mouseScreenPos
Backbone.Mediator.publish 'surface:mouse-scrolled', event unless @disabled
@gameUIState.trigger('surface:mouse-scrolled', event)
#- Keyboard callbacks
onKeyEvent: (e) =>
return unless @realTime
@realTimeInputEvents.add(_.pick(e, 'type', 'keyCode', 'ctrlKey', 'metaKey', 'shiftKey'))
#- Canvas callbacks
@ -758,6 +766,8 @@ module.exports = Surface = class Surface extends CocoClass
@webGLStage.enableMouseOver 0
@webGLCanvas.off 'mousewheel', @onMouseWheel
$(window).off 'resize', @onResize
$(window).off('keydown', @onKeyEvent)
$(window).off('keyup', @onKeyEvent)
clearTimeout @surfacePauseTimeout if @surfacePauseTimeout
clearTimeout @surfaceZoomPauseTimeout if @surfaceZoomPauseTimeout
super()