input.pointer event
表示鼠标、触控或笔在本应用绘图面上的进入、移动、按下、抬起、取消和离开。
Event payload
{
canvasId,
kind: "enter" | "move" | "down" | "up" | "cancel" | "leave",
pointerId: u32,
pointerType: "mouse" | "touch" | "pen" | "unknown",
x: f32, y: f32,
buttons: u16,
pressure?: f32,
coalesced: Array<{ x: f32, y: f32, pressure?: f32 }>,
droppedMoves: u32,
modifiers: ModifierSet
}
坐标使用绘图面逻辑像素。pointerId 只在当前活动期有效。
Examples
host.events.on('input.pointer', (event) => {
if (event.kind === 'down') beginStroke(event.pointerId, event.x, event.y);
if (event.kind === 'move') {
for (const point of event.coalesced) extendStroke(event.pointerId, point.x, point.y);
extendStroke(event.pointerId, event.x, event.y);
}
if (event.kind === 'up' || event.kind === 'cancel') endStroke(event.pointerId);
});
Delivery rules
连续 move 可以按模块页规则合并到 coalesced;超限时只保留最新中间样本并以 droppedMoves 报告更早省略数,当前点始终由顶层坐标保留。down、up 和 cancel 不得静默丢弃。失焦时宿主为仍活动的指针发送 cancel。
buttons 和 pressure 使用模块页的封闭定义;未定义的按钮位必须为 0。按钮掩码表示事件后的状态,cancel 固定为 0;enter/leave 如实保留当时仍按下的其他按钮。
Requirements
- 事件声明:
input.pointer - 来源:
passive;只在本应用绘图面可见且接收指针时送达 - 信任档位:继承
input的 green