606 lines
12 KiB
Markdown
606 lines
12 KiB
Markdown
|
|
# Components 模块文档
|
|||
|
|
|
|||
|
|
## 模块概述
|
|||
|
|
|
|||
|
|
| 项目 | 内容 |
|
|||
|
|
|------|------|
|
|||
|
|
| **模块名** | components |
|
|||
|
|
| **职责** | 提供 BIM 3D 引擎 SDK 的所有 UI 组件 |
|
|||
|
|
| **公开 API** | 20+ 个组件类 |
|
|||
|
|
| **状态** | ✅ 稳定 |
|
|||
|
|
|
|||
|
|
## 代码地图
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
src/components/
|
|||
|
|
├── engine/ # 3D 引擎组件
|
|||
|
|
├── dialog/ # 通用弹窗组件
|
|||
|
|
├── tree/ # 树形控件组件
|
|||
|
|
├── menu/ # 菜单组件
|
|||
|
|
├── button-group/ # 按钮组件
|
|||
|
|
├── collapse/ # 折叠面板组件
|
|||
|
|
├── tab/ # 标签页组件
|
|||
|
|
├── description/ # 描述列表组件
|
|||
|
|
├── measure-panel/ # 测量面板组件
|
|||
|
|
├── section-plane-panel/ # 平面剖切面板
|
|||
|
|
├── section-axis-panel/ # 轴向剖切面板
|
|||
|
|
├── section-box-panel/ # 剖切盒面板
|
|||
|
|
├── walk-control-panel/ # 漫游控制面板
|
|||
|
|
├── walk-path-panel/ # 漫游路径面板
|
|||
|
|
├── walk-plan-view-panel/ # 漫游平面图面板
|
|||
|
|
├── right-key/ # 右键菜单组件
|
|||
|
|
└── map-panel/ # 地图面板组件
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 组件接口
|
|||
|
|
|
|||
|
|
所有组件实现统一接口:
|
|||
|
|
|
|||
|
|
```typescript
|
|||
|
|
interface IBimComponent {
|
|||
|
|
element: HTMLElement;
|
|||
|
|
init(): void;
|
|||
|
|
setTheme(theme: ThemeConfig): void;
|
|||
|
|
setLocales?(): void;
|
|||
|
|
destroy(): void;
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Engine(3D 引擎组件)
|
|||
|
|
|
|||
|
|
### 概述
|
|||
|
|
|
|||
|
|
包装第三方 3D 引擎 SDK,提供模型加载、视角控制、测量功能。
|
|||
|
|
|
|||
|
|
### 配置
|
|||
|
|
|
|||
|
|
```typescript
|
|||
|
|
interface EngineOptions {
|
|||
|
|
container: HTMLElement;
|
|||
|
|
backgroundColor?: number | string;
|
|||
|
|
version?: 'v1' | 'v2';
|
|||
|
|
showStats?: boolean;
|
|||
|
|
showViewCube?: boolean;
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### API
|
|||
|
|
|
|||
|
|
```typescript
|
|||
|
|
class Engine {
|
|||
|
|
init(): void;
|
|||
|
|
loadModel(url: string, options?: ModelLoadOptions): void;
|
|||
|
|
CameraGoHome(): void;
|
|||
|
|
getEngine(): any;
|
|||
|
|
activateMeasure(mode: MeasureMode): void;
|
|||
|
|
deactivateMeasure(): void;
|
|||
|
|
setTheme(theme: ThemeConfig): void;
|
|||
|
|
destroy(): void;
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 测量模式
|
|||
|
|
|
|||
|
|
| 模式 | 说明 |
|
|||
|
|
|------|------|
|
|||
|
|
| `distance` | 距离测量 |
|
|||
|
|
| `minDistance` | 最小距离 |
|
|||
|
|
| `angle` | 角度测量 |
|
|||
|
|
| `elevation` | 标高测量 |
|
|||
|
|
| `volume` | 体积测量 |
|
|||
|
|
| `laserDistance` | 激光测距 |
|
|||
|
|
| `slope` | 坡度测量 |
|
|||
|
|
| `spaceVolume` | 空间体积 |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## BimDialog(通用弹窗组件)
|
|||
|
|
|
|||
|
|
### 概述
|
|||
|
|
|
|||
|
|
通用弹窗容器,支持拖拽、缩放、自定义内容。
|
|||
|
|
|
|||
|
|
### 配置
|
|||
|
|
|
|||
|
|
```typescript
|
|||
|
|
interface DialogOptions {
|
|||
|
|
container: HTMLElement;
|
|||
|
|
title?: string;
|
|||
|
|
content?: HTMLElement | string;
|
|||
|
|
width?: number | string;
|
|||
|
|
height?: number | string;
|
|||
|
|
position?: DialogPosition;
|
|||
|
|
draggable?: boolean;
|
|||
|
|
resizable?: boolean;
|
|||
|
|
minWidth?: number;
|
|||
|
|
minHeight?: number;
|
|||
|
|
onOpen?: () => void;
|
|||
|
|
onClose?: () => void;
|
|||
|
|
backgroundColor?: string;
|
|||
|
|
headerBackgroundColor?: string;
|
|||
|
|
titleColor?: string;
|
|||
|
|
textColor?: string;
|
|||
|
|
borderColor?: string;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
type DialogPosition =
|
|||
|
|
| 'center'
|
|||
|
|
| 'top-left' | 'top-center' | 'top-right'
|
|||
|
|
| 'left-center' | 'right-center'
|
|||
|
|
| 'bottom-left' | 'bottom-center' | 'bottom-right'
|
|||
|
|
| { x: number; y: number };
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### API
|
|||
|
|
|
|||
|
|
```typescript
|
|||
|
|
class BimDialog {
|
|||
|
|
init(): void;
|
|||
|
|
setContent(content: HTMLElement | string): void;
|
|||
|
|
fitWidth(recenter?: boolean): void;
|
|||
|
|
fitHeight(recenter?: boolean): void;
|
|||
|
|
close(): void;
|
|||
|
|
setTheme(theme: ThemeConfig): void;
|
|||
|
|
destroy(): void;
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## BimTree(树形控件组件)
|
|||
|
|
|
|||
|
|
### 概述
|
|||
|
|
|
|||
|
|
递归树形结构展示,支持复选框、搜索、展开折叠。
|
|||
|
|
|
|||
|
|
### 配置
|
|||
|
|
|
|||
|
|
```typescript
|
|||
|
|
interface TreeOptions {
|
|||
|
|
data: TreeNodeConfig[];
|
|||
|
|
checkable?: boolean;
|
|||
|
|
checkStrictly?: boolean;
|
|||
|
|
indent?: number;
|
|||
|
|
defaultExpandAll?: boolean;
|
|||
|
|
enableSearch?: boolean;
|
|||
|
|
searchPlaceholder?: string;
|
|||
|
|
onNodeCheck?: (node: BimTreeNode) => void;
|
|||
|
|
onNodeSelect?: (node: BimTreeNode) => void;
|
|||
|
|
onNodeExpand?: (node: BimTreeNode) => void;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
interface TreeNodeConfig {
|
|||
|
|
id: string;
|
|||
|
|
label: string;
|
|||
|
|
icon?: string;
|
|||
|
|
children?: TreeNodeConfig[];
|
|||
|
|
expanded?: boolean;
|
|||
|
|
checked?: boolean;
|
|||
|
|
disabled?: boolean;
|
|||
|
|
data?: any;
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### API
|
|||
|
|
|
|||
|
|
```typescript
|
|||
|
|
class BimTree {
|
|||
|
|
init(): void;
|
|||
|
|
getNode(id: string): BimTreeNode | undefined;
|
|||
|
|
checkNode(id: string, checked: boolean): void;
|
|||
|
|
expandAll(expanded: boolean): void;
|
|||
|
|
getCheckedNodes(includeHalf?: boolean): TreeNodeConfig[];
|
|||
|
|
revealNode(node: BimTreeNode): void;
|
|||
|
|
setTheme(theme: ThemeConfig): void;
|
|||
|
|
destroy(): void;
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## BimMenu(菜单组件)
|
|||
|
|
|
|||
|
|
### 概述
|
|||
|
|
|
|||
|
|
菜单列表渲染,支持分组、排序、递归子菜单。
|
|||
|
|
|
|||
|
|
### 配置
|
|||
|
|
|
|||
|
|
```typescript
|
|||
|
|
interface MenuOptions {
|
|||
|
|
items: MenuItemConfig[];
|
|||
|
|
groupOrder?: string[];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
interface MenuItemConfig {
|
|||
|
|
id: string;
|
|||
|
|
label: string;
|
|||
|
|
icon?: string;
|
|||
|
|
group?: string;
|
|||
|
|
order?: number;
|
|||
|
|
visible?: boolean;
|
|||
|
|
disabled?: boolean;
|
|||
|
|
children?: MenuItemConfig[];
|
|||
|
|
onClick?: () => void;
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### API
|
|||
|
|
|
|||
|
|
```typescript
|
|||
|
|
class BimMenu {
|
|||
|
|
init(): void;
|
|||
|
|
getElement(): HTMLElement;
|
|||
|
|
setTheme(theme: ThemeConfig): void;
|
|||
|
|
destroy(): void;
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## BimButtonGroup(按钮组件)
|
|||
|
|
|
|||
|
|
### 概述
|
|||
|
|
|
|||
|
|
分组按钮布局,支持下拉菜单、互斥激活。
|
|||
|
|
|
|||
|
|
### 配置
|
|||
|
|
|
|||
|
|
```typescript
|
|||
|
|
interface ButtonGroupOptions {
|
|||
|
|
container: HTMLElement | string;
|
|||
|
|
position?: GroupPosition;
|
|||
|
|
direction?: 'row' | 'column';
|
|||
|
|
align?: 'vertical' | 'horizontal';
|
|||
|
|
expand?: 'up' | 'down' | 'left' | 'right';
|
|||
|
|
type?: 'default' | 'glass-pill';
|
|||
|
|
showLabel?: boolean;
|
|||
|
|
visibility?: Record<string, boolean>;
|
|||
|
|
backgroundColor?: string;
|
|||
|
|
btnBackgroundColor?: string;
|
|||
|
|
btnHoverColor?: string;
|
|||
|
|
btnActiveColor?: string;
|
|||
|
|
iconColor?: string;
|
|||
|
|
iconActiveColor?: string;
|
|||
|
|
textColor?: string;
|
|||
|
|
textActiveColor?: string;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
interface ButtonConfig {
|
|||
|
|
id: string;
|
|||
|
|
type: 'button' | 'menu';
|
|||
|
|
label: string;
|
|||
|
|
icon?: string;
|
|||
|
|
keepActive?: boolean;
|
|||
|
|
exclusive?: boolean;
|
|||
|
|
isActive?: boolean;
|
|||
|
|
disabled?: boolean;
|
|||
|
|
onClick?: (button: any) => void;
|
|||
|
|
children?: ButtonConfig[];
|
|||
|
|
groupId?: string;
|
|||
|
|
parentId?: string;
|
|||
|
|
align?: 'vertical' | 'horizontal';
|
|||
|
|
iconSize?: number;
|
|||
|
|
minWidth?: number;
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### API
|
|||
|
|
|
|||
|
|
```typescript
|
|||
|
|
class BimButtonGroup {
|
|||
|
|
init(): Promise<void>;
|
|||
|
|
addGroup(groupId: string, beforeGroupId?: string): void;
|
|||
|
|
addButton(config: ButtonConfig): void;
|
|||
|
|
setBtnActive(id: string, active?: boolean): void;
|
|||
|
|
setShowLabel(show: boolean): void;
|
|||
|
|
updateButtonVisibility(id: string, visible: boolean): void;
|
|||
|
|
setColors(colors: ButtonGroupColors): void;
|
|||
|
|
setTheme(theme: ThemeConfig): void;
|
|||
|
|
destroy(): void;
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## BimCollapse(折叠面板组件)
|
|||
|
|
|
|||
|
|
### 概述
|
|||
|
|
|
|||
|
|
可折叠/展开的面板组件,支持手风琴模式。
|
|||
|
|
|
|||
|
|
### 配置
|
|||
|
|
|
|||
|
|
```typescript
|
|||
|
|
interface CollapseOptions {
|
|||
|
|
container: HTMLElement | string;
|
|||
|
|
items: CollapseItemConfig[];
|
|||
|
|
activeIds?: string[];
|
|||
|
|
accordion?: boolean;
|
|||
|
|
bordered?: boolean;
|
|||
|
|
ghost?: boolean;
|
|||
|
|
className?: string;
|
|||
|
|
onChange?: (activeIds: string[]) => void;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
interface CollapseItemConfig {
|
|||
|
|
id: string;
|
|||
|
|
title: string;
|
|||
|
|
content: HTMLElement | string;
|
|||
|
|
icon?: string;
|
|||
|
|
extra?: HTMLElement | string;
|
|||
|
|
disabled?: boolean;
|
|||
|
|
className?: string;
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### API
|
|||
|
|
|
|||
|
|
```typescript
|
|||
|
|
class BimCollapse {
|
|||
|
|
init(): void;
|
|||
|
|
toggleItem(id: string): void;
|
|||
|
|
setTheme(theme: ThemeConfig): void;
|
|||
|
|
destroy(): void;
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## BimTab(标签页组件)
|
|||
|
|
|
|||
|
|
### 概述
|
|||
|
|
|
|||
|
|
标签页容器,支持图标、禁用态。
|
|||
|
|
|
|||
|
|
### 配置
|
|||
|
|
|
|||
|
|
```typescript
|
|||
|
|
interface TabOptions {
|
|||
|
|
container: HTMLElement;
|
|||
|
|
tabs: TabItem[];
|
|||
|
|
activeId?: string;
|
|||
|
|
onChange?: (tabId: string, tab: TabItem) => void;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
interface TabItem {
|
|||
|
|
id: string;
|
|||
|
|
title: string;
|
|||
|
|
icon?: string;
|
|||
|
|
content: HTMLElement | string;
|
|||
|
|
disabled?: boolean;
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### API
|
|||
|
|
|
|||
|
|
```typescript
|
|||
|
|
class BimTab {
|
|||
|
|
init(): void;
|
|||
|
|
activateTab(tabId: string): void;
|
|||
|
|
setTheme(theme: ThemeConfig): void;
|
|||
|
|
setLocales(): void;
|
|||
|
|
destroy(): void;
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## BimDescription(描述列表组件)
|
|||
|
|
|
|||
|
|
### 概述
|
|||
|
|
|
|||
|
|
Key-Value 数据展示组件。
|
|||
|
|
|
|||
|
|
### 配置
|
|||
|
|
|
|||
|
|
```typescript
|
|||
|
|
interface DescriptionOptions {
|
|||
|
|
container: HTMLElement | string;
|
|||
|
|
items: DescriptionItem[];
|
|||
|
|
bordered?: boolean;
|
|||
|
|
className?: string;
|
|||
|
|
fontSize?: string;
|
|||
|
|
labelColor?: string;
|
|||
|
|
valueColor?: string;
|
|||
|
|
labelWidth?: string;
|
|||
|
|
labelPadding?: string;
|
|||
|
|
valuePadding?: string;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
interface DescriptionItem {
|
|||
|
|
label: string;
|
|||
|
|
value: HTMLElement | string;
|
|||
|
|
labelColor?: string;
|
|||
|
|
valueColor?: string;
|
|||
|
|
className?: string;
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### API
|
|||
|
|
|
|||
|
|
```typescript
|
|||
|
|
class BimDescription {
|
|||
|
|
init(): void;
|
|||
|
|
setItems(items: DescriptionItem[]): void;
|
|||
|
|
setTheme(theme: ThemeConfig): void;
|
|||
|
|
destroy(): void;
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## MeasurePanel(测量面板组件)
|
|||
|
|
|
|||
|
|
### 概述
|
|||
|
|
|
|||
|
|
测量面板 UI,支持 8 种测量类型。
|
|||
|
|
|
|||
|
|
### 配置
|
|||
|
|
|
|||
|
|
```typescript
|
|||
|
|
interface MeasurePanelOptions {
|
|||
|
|
defaultMode?: MeasureMode;
|
|||
|
|
defaultExpanded?: boolean;
|
|||
|
|
onModeChange?: (mode: MeasureMode) => void;
|
|||
|
|
onExpandedChange?: (expanded: boolean) => void;
|
|||
|
|
onClearAll?: () => void;
|
|||
|
|
onSettings?: () => void;
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### API
|
|||
|
|
|
|||
|
|
```typescript
|
|||
|
|
class MeasurePanel {
|
|||
|
|
init(): void;
|
|||
|
|
getActiveMode(): MeasureMode;
|
|||
|
|
switchMode(mode: MeasureMode): void;
|
|||
|
|
setResult(result: MeasureResult | null): void;
|
|||
|
|
clearAll(): void;
|
|||
|
|
getConfig(): MeasureConfig;
|
|||
|
|
setConfig(partial: Partial<MeasureConfig>, persist?: boolean): void;
|
|||
|
|
setExpanded(expanded: boolean): void;
|
|||
|
|
getExpanded(): boolean;
|
|||
|
|
setTheme(theme: ThemeConfig): void;
|
|||
|
|
destroy(): void;
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## SectionPlanePanel(平面剖切面板)
|
|||
|
|
|
|||
|
|
### 概述
|
|||
|
|
|
|||
|
|
平面剖切控制面板。
|
|||
|
|
|
|||
|
|
### 配置
|
|||
|
|
|
|||
|
|
```typescript
|
|||
|
|
interface SectionPlanePanelOptions {
|
|||
|
|
onHide?: () => void;
|
|||
|
|
onReverse?: () => void;
|
|||
|
|
onReset?: () => void;
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### API
|
|||
|
|
|
|||
|
|
```typescript
|
|||
|
|
class SectionPlanePanel {
|
|||
|
|
init(): void;
|
|||
|
|
setTheme(theme: ThemeConfig): void;
|
|||
|
|
setLocales(): void;
|
|||
|
|
destroy(): void;
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## SectionAxisPanel(轴向剖切面板)
|
|||
|
|
|
|||
|
|
### 概述
|
|||
|
|
|
|||
|
|
X/Y/Z 轴向剖切控制面板。
|
|||
|
|
|
|||
|
|
### 配置
|
|||
|
|
|
|||
|
|
```typescript
|
|||
|
|
interface SectionAxisPanelOptions {
|
|||
|
|
defaultAxis?: 'x' | 'y' | 'z';
|
|||
|
|
onHideToggle?: (isHidden: boolean) => void;
|
|||
|
|
onReverse?: () => void;
|
|||
|
|
onAxisChange?: (axis: 'x' | 'y' | 'z') => void;
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## SectionBoxPanel(剖切盒面板)
|
|||
|
|
|
|||
|
|
### 概述
|
|||
|
|
|
|||
|
|
六面体剖切盒控制面板。
|
|||
|
|
|
|||
|
|
### 配置
|
|||
|
|
|
|||
|
|
```typescript
|
|||
|
|
interface SectionBoxPanelOptions {
|
|||
|
|
onHideToggle?: (isHidden: boolean) => void;
|
|||
|
|
onReverseToggle?: (isReversed: boolean) => void;
|
|||
|
|
onFitToModel?: () => void;
|
|||
|
|
onReset?: () => void;
|
|||
|
|
onRangeChange?: (axis: string, value: number) => void;
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## WalkControlPanel(漫游控制面板)
|
|||
|
|
|
|||
|
|
### 概述
|
|||
|
|
|
|||
|
|
漫游模式控制面板。
|
|||
|
|
|
|||
|
|
### 配置
|
|||
|
|
|
|||
|
|
```typescript
|
|||
|
|
interface WalkControlPanelOptions {
|
|||
|
|
defaultSpeed?: number;
|
|||
|
|
defaultGravity?: boolean;
|
|||
|
|
defaultCollision?: boolean;
|
|||
|
|
defaultCharacterModel?: 'construction-worker' | 'office-male';
|
|||
|
|
defaultWalkMode?: 'walk' | 'run';
|
|||
|
|
onPlanViewToggle?: (active: boolean) => void;
|
|||
|
|
onPathModeToggle?: (active: boolean) => void;
|
|||
|
|
onWalkModeToggle?: (active: boolean) => void;
|
|||
|
|
onSpeedChange?: (speed: number) => void;
|
|||
|
|
onGravityToggle?: (enabled: boolean) => void;
|
|||
|
|
onCollisionToggle?: (enabled: boolean) => void;
|
|||
|
|
onCharacterModelChange?: (model: string) => void;
|
|||
|
|
onWalkModeChange?: (mode: string) => void;
|
|||
|
|
onExit?: () => void;
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### API
|
|||
|
|
|
|||
|
|
```typescript
|
|||
|
|
class WalkControlPanel {
|
|||
|
|
init(): void;
|
|||
|
|
getState(): WalkControlState;
|
|||
|
|
setPlanViewActive(active: boolean): void;
|
|||
|
|
setPathModeActive(active: boolean): void;
|
|||
|
|
setTheme(theme: ThemeConfig): void;
|
|||
|
|
setLocales(): void;
|
|||
|
|
destroy(): void;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
interface WalkControlState {
|
|||
|
|
mode: 'none' | 'path' | 'walk';
|
|||
|
|
isPlanViewActive: boolean;
|
|||
|
|
speed: number;
|
|||
|
|
gravity: boolean;
|
|||
|
|
collision: boolean;
|
|||
|
|
characterModel: string;
|
|||
|
|
walkMode: string;
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 依赖关系
|
|||
|
|
|
|||
|
|
所有组件依赖:
|
|||
|
|
- `ThemeManager` (主题)
|
|||
|
|
- `LocaleManager` (国际化,部分组件)
|
|||
|
|
|
|||
|
|
组件不直接依赖 Manager,由 Manager 创建和管理组件实例。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
**文档生成时间**: 2026-01-23
|