HumanBreak/docs/api/class/hotkey.md
2024-03-01 19:52:30 +08:00

6.9 KiB
Raw Blame History

类 Hotkey

渲染进程类,在游戏进程不能直接使用,继承自 EventEmitter

部分接口与类型说明

interface AssistHotkey {
    ctrl: boolean
    shift: boolean
    alt: boolean
}

三个属性分别表示对应的按键是否按下,或者是否需要被按下

interface RegisteredHotkeyData extends Partial<AssistHotkey> {
    id: string
    name: string
    defaults: KeyCode
    type?: KeyEmitType
}
  • id: 注册的这个按键的 id可以加后缀参考同 id 按键
  • name: 这个按键的名称,会显示在自定义快捷键界面中
  • defaults: 玩家不进行设置时,这个功能的默认按键
  • type: 占位属性,暂时无用
  • ctrl shift alt: 玩家不进行设置时,这个功能默认的辅助按键,按下辅助按键后按下默认按键才可触发功能
interface HotkeyData extends Required<RegisteredHotkeyData> {
    key: KeyCode
    func: Map<symbol, HotkeyFunc>
    group?: string
}
  • key: 当前这个功能的按键
  • func: 所有当前存在的作用域下,每个作用域触发时的执行函数
  • group: 这个按键所处的分组,参考 按键分组
type HotkeyFunc = (id: string, code: KeyCode, ev: KeyboardEvent) => void;

表示按键的触发函数

  • id: 触发的按键的 id包含数字后缀
  • code: 触发时按下的按键
  • ev: 触发时的 KeyboardEvent,对于虚拟键盘,会进行不完全拟真

id

declare var id: string

name

declare var name: string

data

declare var data: Record<string, HotkeyData>
  • 成员说明

    该成员存储了所有注册的按键信息,其中键表示按键的 id值表示这个 id 对应的按键

keyMap

declare var keyMap: Map<KeyCode, HotkeyData[]>
  • 成员说明

    存储了每个按键可以触发的功能列表,例如 X 键打开怪物手册等

groupName

declare var groupName: Record<string, string>
  • 成员说明

    存储了每个分组对应的显示名称,键表示分组 id值表示分组名称

groups

declare var groups: Record<string, string[]>
  • 成员说明

    存储了每个分组所包含的按键 id键表示分组 id值是一个数组包含了所有的按键 id

enabled

declare var enabled: boolean
  • 成员说明

    表示当前按键实例是否被启用

conditionMap

declare var conditionMap: Map<symbol, () => boolean>
  • 成员说明

    描述了每个作用域下的按键启用条件,也就是 when 函数的功能

constructor()

interface Hotkey {
    new(id: string, name: string): Hotkey
}

register()

declare function register(data: RegisterHotkeyData): this
  • 方法说明

    注册一个按键id 可以包含数字后缀,可以显示为同一个按键操作拥有多个按键可以触发

realize()

declare function realize(id: string, func: HotkeyFunc): this
  • 参数说明

    • id: 要实现的按键 id可以不包含数字后缀
    • func: 按键被触发时执行的函数
  • 方法说明

    实现一个按键按下时的操作

use()

declare function use(symbol: symbol): this
  • 方法说明

    使用一个 symbol 作为当前作用域,之后调用 realize 所实现的按键功能将会添加至此作用域

dispose()

declare function dispose(symbol?: symbol): void
  • 参数说明

    • symbol: 要释放的作用域
  • 方法说明

    释放一个作用域,释放后作用域将退回至删除的作用域的上一级

set()

declare function set(id: string, key: KeyCode, assist: number): void
  • 参数说明

    • id: 要修改的按键的 id
    • key: 要修改为的触发按键
    • assist: 要修改为的辅助按键
  • 方法说明

    设置一个按键信息

emitKey()

declare function emitKey(
    key: KeyCode,
    assist: number,
    type: KeyEmitType,
    ev: KeyboardEvent
): boolean
  • 参数说明

    • key: 要触发的按键
    • assist: 触发时的辅助按键
    • type: 暂时为占位参数,填写 up 即可
    • ev: 触发按键时的按键事件信息 KeyboardEvent,参考 dom 中的按键事件
  • 方法说明

    触发一个按键

  • 返回值

    是否成功触发至少一个按键

group()

declare function group(id: string, name: string): this
  • 参数说明

    • id: 分组的 id
    • name: 分组的显示名称
  • 方法说明

    按键分组,分组后调用 register 注册的按键会进入这个分组,参考按键分组

enable()

declare function enabled(): void
  • 方法说明

    启用这个按键实例

disable()

declare function disabled(): void
  • 方法说明

    禁用这个按键实例

when()

declare function when(fn: () => boolean): this
  • 方法说明

    在当前作用域下,满足一定条件后启用按键功能

toJSON()

declare function toJSON(): string

fromJSON()

declare function fromJSON(data: string): void

list

declare var list: Hotkey[]
  • 静态成员说明

    存储了所有的按键实例

get()

declare function get(id: string): Hotkey
  • 静态方法说明

    根据 id 获取到对应的按键实例

set 事件

interface HotkeyEvent {
    set: (id: string, key: KeyCode, assist: number) => void
}
  • 参数说明

    • id: 设置的按键的 id
    • key: 设置为的触发按键
    • assist: 设置为的辅助按键
  • 事件说明

    当设置按键信息(执行set函数)时触发该事件

emit 事件

interface HotkeyEvent {
    emit: (key: KeyCode, assist: number) => void
}
  • 参数说明

    • key: 触发的按键
    • assist: 触发的辅助按键
  • 事件说明

    当触发一个按键时触发该事件