HTML5 Canvas Keyboard events with Konva
There are no build-in keyboards events like keydown
or keyup
in Konva.
But how to listen keydown or keyup events on canvas?
You can easily add them by two ways:
- Listen global events on
window
object
- Or make stage container focusable with
tabIndex
property and listen events on it.
Instructions: click on stage to focus it, move a shape with arrows
HTML5 Canvas Keyboard eventsview raw<!DOCTYPE html> <html> <head> <script src="https://unpkg.com/[email protected]/konva.min.js"></script> <meta charset="utf-8" /> <title>Canvas Keyboard events Demo</title> <style> body { margin: 0; padding: 0; overflow: hidden; background-color: #f0f0f0; } </style> </head>
<body> <div id="container"></div> <script> var stage = new Konva.Stage({ container: 'container', width: window.innerWidth, height: window.innerHeight, });
var layer = new Konva.Layer(); stage.add(layer);
var circle = new Konva.Circle({ x: stage.width() / 2, y: stage.height() / 2 + 10, radius: 70, fill: 'red', stroke: 'black', strokeWidth: 4, });
layer.add(circle);
var container = stage.container();
container.tabIndex = 1; container.focus();
const DELTA = 4;
container.addEventListener('keydown', function (e) { if (e.keyCode === 37) { circle.x(circle.x() - DELTA); } else if (e.keyCode === 38) { circle.y(circle.y() - DELTA); } else if (e.keyCode === 39) { circle.x(circle.x() + DELTA); } else if (e.keyCode === 40) { circle.y(circle.y() + DELTA); } else { return; } e.preventDefault(); }); </script> </body> </html>
|