Skip to main content

HTML5 Canvas 通过 Konva 触发事件

要通过 Konva 触发事件,我们可以使用 fire() 方法。
这使我们能够以编程方式触发事件,如 click、mouseover、mousemove 等,也可以触发自定义事件,如 foo 和 bar。

注意:虽然可以使用自定义事件,但一般来说,使用内置交互事件(如 click、mouseover、mousemove 等)会更好。自定义事件可能会使代码更难维护和调试。

import Konva from 'konva';

const stage = new Konva.Stage({
container: 'container',
width: window.innerWidth,
height: window.innerHeight,
});

const layer = new Konva.Layer();
stage.add(layer);

const circle = new Konva.Circle({
x: stage.width() / 2,
y: stage.height() / 2,
radius: 70,
fill: 'red',
stroke: 'black',
strokeWidth: 4,
});

// 添加形状事件监听器
circle.on('customEvent', function (evt) {
alert('custom event fired');
});

// 添加按钮以触发自定义事件
const button = document.createElement('button');
button.innerHTML = '触发自定义事件';
button.style.position = 'absolute';
button.style.top = '10px';
button.style.left = '10px';
button.style.zIndex = '1';
document.body.appendChild(button);
button.addEventListener('click', () => {
// 触发自定义事件
circle.fire('customEvent', {
bubbles: true,
});
});

layer.add(circle);