我们可以用 on()
给节点绑定事件。on()
方法需要传入两个参数:事件类型、事件发生时执行的函数。
Konva 支持的事件类型有 mouseover
, mouseout
, mouseenter
, mouseleave
, mousemove
, mousedown
, mouseup
, wheel
, click
, dblclick
, dragstart
, dragmove
,dragend
。
说明:尝试鼠标滑过下面的三角形和圆形看看。
Konva Binding_Events Demo view raw <!DOCTYPE html > <html > <head > <script src ="https://unpkg.com/konva@4.0.18/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); layer.draw(); } 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(); var x = mousePos.x - 190 ; var y = mousePos.y - 40 ; writeMessage('x: ' + x + ', y: ' + 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 >