Skip to content

# 类 SettingDisplayer ​

渲染进程类，游戏进程不可直接使用，继承自 `EventEmitter`

- 实例属性
  - `setting`
  - `selectStack`
  - `displayInfo`
- 实例方法
  - 构造器`constructor`
  - `add`
  - `cut`
  - `updata`
- 实例事件
  - `update`

## setting ​

ts

    declare var setting: MotaSetting

- 成员说明

  该成员描述了当前显示实例的设置

## selectStack ​

ts

    declare var selectStack: string[]

- 成员说明

  该成员描述了当前的设置选择栈，例如当选中了级联设置 `setting1.setting2` 时，选择栈就是 `['setting1', 'setting2']`

## displayInfo ​

ts

    declare var displayInfo: SettingDisplayInfo[]

- 成员说明

  该成员是响应式对象（`reactive`），描述了当前设置的所有显示信息，包含父设置（级联设置）的信息，一般情况下信息与选择栈同步。

- 接口 `SettingDisplayInfo`

  ts

      interface SettingDisplayInfo {
          item: MotaSettingItem | null;
          list: Record<string, MotaSettingItem>;
          text: string[];
      }

  - 详细说明
    - `item`: 描述了当前设置的信息，当没有选择设置或选择的是级联设置的时候为 `null`
    - `list`: 这个设置的选择栈
    - `text`: 显示的文字信息，经由 `split` 处理，分割字符为 `\n`，可以经过 `splitText` 函数处理后直接显示

## constructor() ​

ts

    interface SettingDisplayer {
        new(setting: MotaSetting): SettingDisplayer
    }

- 构造器说明

  传入要显示的设置实例，返回一个显示器实例

## add() ​

ts

    declare function add(key: string): void

- 方法说明

  该方法用于向选择栈里面添加一个选择项，例如现在我选择了 `setting2`，那么就应该调用 `add('setting2')`

## cut() ​

ts

    declare function cut(index: number, noUpdate: boolean = false): void

- 参数说明

  - `index`: 从第几个元素开始剪切，即第一个剪切项的索引
  - `noUpdate`: 是否不进行刷新

- 方法说明

  该方法用于剪切选择栈，例如我从选择支 `s1.s2.s3.s4` 切换至了 `s1.s6`，那么应该先调用 `cut(1)`，再调用 `add('s6')`

## update() ​

ts

    declare function update(): void

- 方法说明

  用于更新选择栈显示信息

## update 事件 ​

ts

    interface SettingDisplayerEvent {
        update: (stack: string[], display: SettingDisplayInfo[]) => void
    }

- 事件说明

  该事件会在选择栈更新时触发，传入的参数分别是当前的选择栈和当前选择栈显示信息