我们可以通过 Event 对象的 target 属性获取触发事件的对象。当我们使用事件委托将事件处理绑定在父节点时,可以通过 target 监听子节点触发的事件;
说明: 点击下面的星形,可以看到 layer 绑定的事件处理指明被点击的图形。
Konva Event_Delegation Demoview raw<!DOCTYPE html> <html> <head> <script src="https://unpkg.com/konva@4.0.18/konva.min.js"></script> <meta charset="utf-8" /> <title>Konva Event Delegation 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();
var star = new Konva.Star({ x: stage.width() / 2, y: stage.height() / 2, numPoints: 15, innerRadius: 40, outerRadius: 70, fill: 'blue', scale: { x: 2, y: 0.5 }, name: 'my star' });
layer.on('click', function(evt) { var shape = evt.target; alert('you clicked on "' + shape.name() + '"'); });
layer.add(star);
stage.add(layer); </script> </body> </html>
|