template/docs/api/motajs-render-core/Event.md
2026-02-28 20:23:34 +08:00

6.6 KiB
Raw Blame History

Event 模块 API 文档

以下内容由 DeepSeek R1 模型生成并微调。


枚举说明

MouseType

值 说明
None 没有按键按下
Left 左键
Middle 中键(按下滚轮)
Right 右键
Back 侧键后退
Forward 侧键前进

WheelType

值 说明
None 无单位
Pixel 以像素为单位
Line 以行为单位(约 1rem)
Page 以页为单位(一个屏幕高度)

ActionType

值 说明
Click 点击事件(按下与抬起在同一元素)
Down 鼠标或手指按下事件
Move 鼠标或手指移动事件
Up 鼠标或手指抬起事件
Enter 进入元素时触发
Leave 离开元素时触发
Wheel 滚轮事件

EventProgress

值 说明
Capture 捕获阶段
Bubble 冒泡阶段

接口说明

IActionEventBase

属性名 类型 说明
target RenderItem 触发事件的元素
touch boolean 是否为触摸操作(true 表示触摸,false 表示鼠标)
type MouseType 触发事件的按键类型(参考 MouseType)
buttons number 当前按下的按键(通过位运算判断,例如 buttons & MouseType.Left)
altKey boolean 是否按下 Alt 键
shiftKey boolean 是否按下 Shift 键
ctrlKey boolean 是否按下 Ctrl 键
metaKey boolean 是否按下 Windows/Command 键

IActionEvent

继承关系

graph LR
    IActionEvent --> IActionEventBase
属性名 类型 说明
identifier number 操作的唯一标识符(在按下、移动、抬起中一致)
offsetX number 相对于元素左上角的横坐标
offsetY number 相对于元素左上角的纵坐标
absoluteX number 相对于整个画布左上角的横坐标
absoluteY number 相对于整个画布左上角的纵坐标

方法说明

stopPropagation
function stopPropagation(): void;

描述
停止事件的传播(捕获或冒泡阶段)。

示例

item.on('click', ev => {
    ev.stopPropagation(); // 阻止事件继续传播
});

IWheelEvent

graph LR
    IWheelEvent --> IActionEvent --> IActionEventBase
属性名 类型 说明
wheelX number 横向滚动量
wheelY number 纵向滚动量
wheelZ number 垂直屏幕方向的滚动量
wheelType WheelType 滚动量的单位类型

ERenderItemActionEvent

描述了所有的交互事件类型。

事件名 参数类型 说明
clickCapture Readonly<IActionEvent> 点击事件的捕获阶段
click Readonly<IActionEvent> 点击事件的冒泡阶段
downCapture Readonly<IActionEvent> 按下事件的捕获阶段
down Readonly<IActionEvent> 按下事件的冒泡阶段
moveCapture Readonly<IActionEvent> 移动事件的捕获阶段
move Readonly<IActionEvent> 移动事件的冒泡阶段
upCapture Readonly<IActionEvent> 抬起事件的捕获阶段
up Readonly<IActionEvent> 抬起事件的冒泡阶段
enter Readonly<IActionEventBase> 进入元素事件
leave Readonly<IActionEventBase> 离开元素事件
wheelCapture Readonly<IWheelEvent> 滚轮事件的捕获阶段
wheel Readonly<IWheelEvent> 滚轮事件的冒泡阶段

ActionEventMap

键(ActionType) 值类型 说明
Click IActionEvent 点击事件
Down IActionEvent 按下事件
Enter IActionEvent 进入元素事件
Leave IActionEvent 离开元素事件
Move IActionEvent 移动事件
Up IActionEvent 抬起事件
Wheel IWheelEvent 滚轮事件

总使用示例

::: code-group

// 创建渲染元素(以 Sprite 为例)
const item = new Sprite();

// 监听点击事件(冒泡阶段)
item.on('click', ev => {
    console.log('点击坐标:', ev.offsetX, ev.offsetY);
    ev.stopPropagation(); // 阻止冒泡
});

// 监听滚轮事件(捕获阶段)
item.on('wheelCapture', ev => {
    console.log('滚轮滚动量:', ev.wheelY, '单位:', WheelType[ev.wheelType]);
});

// 监听进入元素事件
item.on('enter', ev => {
    console.log('进入元素,触发按键:', MouseType[ev.type]);
});
// 监听点击事件(冒泡阶段)
const click = (ev: IActionEvent) => {
    console.log('点击坐标:', ev.offsetX, ev.offsetY);
    ev.stopPropagation(); // 阻止冒泡
};

// 监听滚轮事件(捕获阶段)
const wheel = (ev: IWheelEvent) => {
    console.log('滚轮滚动量:', ev.wheelY, '单位:', WheelType[ev.wheelType]);
};

// 监听进入元素事件
const enter = (ev: IActionEventBase) => {
    console.log('进入元素,触发按键:', MouseType[ev.type]);
};

<sprite onClick={click} onWheelCapture={wheel} onEnter={enter} />;

:::