Skip to content

# 类 UiController ​

渲染进程类，游戏进程无法直接使用，继承自 `Focus`

- 实例成员
  - `list`
  - `num`
  - `show`
- 实例方法
  - 构造器`constructor`
  - `showEnd`
  - `showAll`
  - `get`
  - `holdOn`
  - `close`
  - `closeByName`
  - `open`
  - `register`
  - `unregister`
  - `focusByNum`
  - `getByNum`
  - `hasName`
- 静态成员
  - `list`
- 实例事件
  - `start`
  - `end`

## list ​

ts

    declare var list: Record<string, GameUi>

## num ​

ts

    declare var num: number

## show ​

ts

    declare var show: 'end' | 'all'

## constructor() ​

ts

    interface UiController {
        new(equal?: boolean): UiController
    }

## showEnd() ​

ts

    declare function showEnd(): void

- 方法说明

  设置为只显示最后一个 ui

## showAll() ​

ts

    declare function showAll(): void

- 方法说明

  设置为显示所有 ui

## get() ​

ts

    declare function get(id: string): GameUi

- 方法说明

  通过 ui 的 id 获取到注册的 `GameUi` 实例

## holdOn() ​

ts

    declare function holdOn(): { end(noClosePanel: boolean): void }

- 方法说明

  暂时保持下一次 ui 关闭不会引起闪烁现象，参考防闪烁处理

- 返回值

  返回值是一个对象，包含一个 `end` 方法，用于结束此次的防闪烁处理，如果没有 ui 已经打开，那么会立刻关闭 ui 界面，参数说明是否要调用 `core.closePanel` 函数

## close() ​

ts

    declare function close(num: number): void

- 方法说明

  根据 ui 的唯一标识符关闭一个 ui，如果这个控制器是非平等控制器，那么会同时关闭之后的所有 ui

## closeByName() ​

ts

    declare function closeByName(id: string): void

- 方法说明

  根据 ui 的名称（id）关闭一个 ui，如果是非平等控制器，在第一个匹配的 ui 后的所有 ui 也会一同关闭

## open() ​

ts

    declare function open(id: string, vBind?: any, vOn?: any): number

- 参数说明

  - `id`: 要打开的 ui 的名称（id）
  - `vBind`: 要传递给 ui 的参数（props）
  - `vOn`: 要监听 ui 的事件（emits）

- 方法说明

  打开一个指定的 ui，同时可以为其指定参数与监听的事件，返回打开的 ui 的唯一标识符

- 返回值

  打开的 ui 的唯一标识符，可以用来关闭这个 ui

## register() ​

ts

    declare function register(...ui: GameUi[]): void

- 方法说明

  注册若干个 ui，每个 ui 都是一个 `GameUi` 实例，对于同名（id 相同）的 ui，会直接覆盖

- 示例

  js

      myUi.register(new GameUi('ui1', ui1), new GameUi('ui2', ui2));

## unregister() ​

ts

    declare function unregister(...id: string[]): void

- 方法说明

  用于取消注册若干个 ui，传入 ui 的名称（id）作为参数

## focusByNum() ​

ts

    declare function focusByNum(num: number): void

- 方法说明

  根据 ui 的唯一标识符聚焦 ui

## getByNum() ​

ts

    declare function getByNum(num: number): IndexedGameUi | undefined

## hasName() ​

ts

    declare function hasName(id: string): boolean

- 方法说明

  根据 ui 的名称（id）判断一个 ui 是否被开启

## static list ​

ts

    declare var list: UiController[]

- 静态成员说明

  描述了所有被创建过的 ui 控制器实例

## start 事件 ​

ts

    interface UiControllerEvent {
        start: () => void
    }

- 事件说明

  当 ui 界面被打开，也就是当被打开的 ui 个数从 0 变为 1 时，触发该事件

## end 事件 ​

ts

    interface UiControllerEvent {
        end: (noClosePanel: boolean) => void
    }

- 事件说明

  当 ui 界面被关闭，也就是当被打开的 ui 个数从 1 变为 0 时，触发该事件。如果当前处于防闪烁状态，那么不会触发。参数说明了当这个 UI 被关闭时是否要调用 `core.closePanel` 函数