mirror of
https://github.com/unanmed/HumanBreak.git
synced 2025-04-19 17:16:08 +08:00
6.9 KiB
6.9 KiB
类 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
: 要修改的按键的 idkey
: 要修改为的触发按键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
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
: 设置的按键的 idkey
: 设置为的触发按键assist
: 设置为的辅助按键
-
事件说明
当设置按键信息(执行
set
函数)时触发该事件
emit 事件
interface HotkeyEvent {
emit: (key: KeyCode, assist: number) => void
}
-
参数说明
key
: 触发的按键assist
: 触发的辅助按键
-
事件说明
当触发一个按键时触发该事件