跳到主要内容

HTML5 Canvas 桌面端和移动端事件支持教程

注意:此示例可能已过时,因为现代浏览器支持指针事件。Konva 也支持指针事件。请参阅指针事件示例。如果你不想使用指针事件,请继续阅读。

要使用 Konva 为图形添加同时适用于桌面端和移动端应用的事件处理程序,可以使用 on() 方法并传入事件对。 例如,要在桌面端和移动端应用中触发 mousedown 事件,可以使用 "mousedown touchstart" 事件对来覆盖这两种环境。 要在桌面端和移动端应用中触发 mouseup 事件,可以使用 "mouseup touchend" 事件对。 还可以使用 "dblclick dbltap" 事件对绑定同时适用于桌面端和移动端设备的双击事件。

操作说明:在桌面端或移动端设备上,对圆形触发 mousedown、mouseup、touchstart 或 touchend,以观察相同的功能。

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 circle = new Konva.Circle({
  x: stage.width() / 2,
  y: stage.height() / 2,
  radius: 70,
  fill: 'red',
  stroke: 'black',
  strokeWidth: 4,
});

function writeMessage(message) {
  text.text(message);
}

// desktop and mobile events
circle.on('mousedown touchstart', function () {
  writeMessage('Mousedown or touchstart');
});

circle.on('mouseup touchend', function () {
  writeMessage('Mouseup or touchend');
});

layer.add(circle);
layer.add(text);
stage.add(layer);