Skip to main content

HTML5 Canvas Shape Events

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.

import Konva from 'konva'; const stage = new Konva.Stage({ container: 'container', width: window.innerWidth, height: window.innerHeight, }); const layer = new Konva.Layer(); const text = new Konva.Text({ x: 10, y: 10, fontFamily: 'Calibri', fontSize: 24, text: '', fill: 'black', }); const triangle = new Konva.RegularPolygon({ x: 80, y: 120, sides: 3, radius: 80, fill: '#00D2FF', stroke: 'black', strokeWidth: 4, }); const circle = new Konva.Circle({ x: 230, y: 100, radius: 60, fill: 'red', stroke: 'black', strokeWidth: 4, }); function writeMessage(message) { text.text(message); } triangle.on('mouseout', () => { writeMessage('Mouseout triangle'); }); triangle.on('mousemove', () => { const mousePos = stage.getPointerPosition(); writeMessage('x: ' + mousePos.x + ', y: ' + mousePos.y); }); circle.on('mouseover', () => { writeMessage('Mouseover circle'); }); circle.on('mouseout', () => { writeMessage('Mouseout circle'); }); circle.on('mousedown', () => { writeMessage('Mousedown circle'); }); circle.on('mouseup', () => { writeMessage('Mouseup circle'); }); layer.add(triangle); layer.add(circle); layer.add(text); stage.add(layer);