init: 2.B

This commit is contained in:
AncTe committed 2026-02-28 20:23:34 +08:00
commit 6bf32174d8
610 files changed
+151444

No files matched your search

+201
View File
@@ -0,0 +1,201 @@
# 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
#### 继承关系
```mermaid
graph LR
IActionEvent --> IActionEventBase
```
| 属性名 | 类型 | 说明 |
| ------------ | -------- | -------------------------------------------- |
| `identifier` | `number` | 操作的唯一标识符(在按下、移动、抬起中一致) |
| `offsetX` | `number` | 相对于元素左上角的横坐标 |
| `offsetY` | `number` | 相对于元素左上角的纵坐标 |
| `absoluteX` | `number` | 相对于整个画布左上角的横坐标 |
| `absoluteY` | `number` | 相对于整个画布左上角的纵坐标 |
#### 方法说明
##### `stopPropagation`
```typescript
function stopPropagation(): void;
```
**描述**
停止事件的传播(捕获或冒泡阶段)。
**示例**
```typescript
item.on('click', ev => {
ev.stopPropagation(); // 阻止事件继续传播
});
```
---
### IWheelEvent
```mermaid
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
```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} />;
```
:::