Skip to content

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

属性名类型说明
targetRenderItem触发事件的元素
touchboolean是否为触摸操作(true 表示触摸,false 表示鼠标)
typeMouseType触发事件的按键类型(参考 MouseType
buttonsnumber当前按下的按键(通过位运算判断,例如 buttons & MouseType.Left
altKeyboolean是否按下 Alt
shiftKeyboolean是否按下 Shift
ctrlKeyboolean是否按下 Ctrl
metaKeyboolean是否按下 Windows/Command

IActionEvent

继承关系

属性名类型说明
identifiernumber操作的唯一标识符(在按下、移动、抬起中一致)
offsetXnumber相对于元素左上角的横坐标
offsetYnumber相对于元素左上角的纵坐标
absoluteXnumber相对于整个画布左上角的横坐标
absoluteYnumber相对于整个画布左上角的纵坐标

方法说明

stopPropagation
typescript
function stopPropagation(): void;

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

示例

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

IWheelEvent

属性名类型说明
wheelXnumber横向滚动量
wheelYnumber纵向滚动量
wheelZnumber垂直屏幕方向的滚动量
wheelTypeWheelType滚动量的单位类型

ERenderItemActionEvent

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

事件名参数类型说明
clickCaptureReadonly<IActionEvent>点击事件的捕获阶段
clickReadonly<IActionEvent>点击事件的冒泡阶段
downCaptureReadonly<IActionEvent>按下事件的捕获阶段
downReadonly<IActionEvent>按下事件的冒泡阶段
moveCaptureReadonly<IActionEvent>移动事件的捕获阶段
moveReadonly<IActionEvent>移动事件的冒泡阶段
upCaptureReadonly<IActionEvent>抬起事件的捕获阶段
upReadonly<IActionEvent>抬起事件的冒泡阶段
enterReadonly<IActionEventBase>进入元素事件
leaveReadonly<IActionEventBase>离开元素事件
wheelCaptureReadonly<IWheelEvent>滚轮事件的捕获阶段
wheelReadonly<IWheelEvent>滚轮事件的冒泡阶段

ActionEventMap

键(ActionType)值类型说明
ClickIActionEvent点击事件
DownIActionEvent按下事件
EnterIActionEvent进入元素事件
LeaveIActionEvent离开元素事件
MoveIActionEvent移动事件
UpIActionEvent抬起事件
WheelIWheelEvent滚轮事件

总使用示例

typescript
// 创建渲染元素(以 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]);
});
tsx
// 监听点击事件(冒泡阶段)
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} />;