To detect shape events with Konva, we can use the on()
method to bind event handlers to a node.
The on()
method requires an event type and a function to be executed when the event occurs.
Mouse events: mouseover
, mouseout
, mouseenter
, mouseleave
, mousemove
, mousedown
, mouseup
, wheel
, click
, dblclick
.
Touch events: touchstart
, touchmove
, touchend
, tap
, dbltap
.
Pointer events: pointerdown
, pointermove
, pointereup
, pointercancel
, pointerover
, pointerenter
, pointerout
,pointerleave
, pointerclick
, pointerdblclick
.
Drag events: dragstart
, dragmove
, and dragend
.
Transform events: transformstart
, transform
, transformend
.
Instructions: Mouseover and mouseout of the triangle, and mouseover, mouseout, mousedown, and mouseup over the circle.
Konva Binding_Events Demoview raw<!DOCTYPE html> <html> <head> <script src="https://unpkg.com/[email protected]/konva.min.js"></script> <meta charset="utf-8" /> <title>Konva Shape Events Demo</title> <style> body { margin: 0; padding: 0; overflow: hidden; background-color: #f0f0f0; } </style> </head>
<body> <div id="container"></div> <script> function writeMessage(message) { text.text(message); }
var stage = new Konva.Stage({ container: 'container', width: window.innerWidth, height: window.innerHeight, });
var layer = new Konva.Layer();
var triangle = new Konva.RegularPolygon({ x: 80, y: 120, sides: 3, radius: 80, fill: '#00D2FF', stroke: 'black', strokeWidth: 4, });
var text = new Konva.Text({ x: 10, y: 10, fontFamily: 'Calibri', fontSize: 24, text: '', fill: 'black', });
triangle.on('mouseout', function () { writeMessage('Mouseout triangle'); });
triangle.on('mousemove', function () { var mousePos = stage.getPointerPosition(); writeMessage('x: ' + mousePos.x + ', y: ' + mousePos.y); });
var circle = new Konva.Circle({ x: 230, y: 100, radius: 60, fill: 'red', stroke: 'black', strokeWidth: 4, });
circle.on('mouseover', function () { writeMessage('Mouseover circle'); }); circle.on('mouseout', function () { writeMessage('Mouseout circle'); }); circle.on('mousedown', function () { writeMessage('Mousedown circle'); }); circle.on('mouseup', function () { writeMessage('Mouseup circle'); });
layer.add(triangle); layer.add(circle); layer.add(text);
stage.add(layer); </script> </body> </html>
|