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

260 lines
4.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 类 BgmController
渲染进程类,游戏进程不能直接使用,继承自 [`ResourceController`](./resource-controller.md)
- 实例成员
- [`stack`](#stack)
- [`redoStack`](#redostack)
- [`now`](#now)
- [`transitionTime`](#transitiontime)
- [`transitionCurve`](#transitioncurve)
- [`volume`](#volume)
- [`disable`](#disable)
- [`playing`](#playing)
- 实例方法
- [`add`](#add)
- [`load`](#load)
- [`changeTo`](#changeto)
- [`pause`](#pause)
- [`resume`](#resume)
- [`play`](#play)
- [`undo`](#undo)
- [`redo`](#redo)
- [`setTransition`](#settransition)
- [`get`](#get)
- 实例事件
- [`changeBgm`](#changebgm-事件)
- [`pause`](#pause-事件)
- [`resume`](#resume-事件)
## 部分接口说明
```ts
interface BgmEmits {
preventDefault: () => void
}
```
事件监听参数,用于阻止默认行为,例如切歌、暂停、继续
## stack
```ts
declare var stack: string[]
```
- 成员说明
播放栈,存储了之前播放的最多 10 个 bgm
## redoStack
```ts
declare var redoStack: string[]
```
- 成员说明
恢复栈undo 操作之后会存入这里,从而可以被 redo
## now
```ts
declare var now: string | undefined
```
- 成员说明
当前正在播放的 bgm
## transitionTime
```ts
declare var transitionTime: number
```
- 成员说明
切歌或者暂停等操作的音乐渐变时长
## transitionCurve
```ts
declare var transitionCurve: TimingFn
```
- 成员说明
切歌或者暂停等操作的音乐音量渐变曲线
## volume
```ts
declare var volume: number
```
- 成员说明
当前的音乐音量
## disable
```ts
declare var disable: boolean
```
- 成员说明
是否关闭了音乐
## playing
```ts
declare var playing: boolean
```
- 成员说明
是否正在播放音乐
## add()
```ts
declare function add(uri: string, data: HTMLAudioElement): void
```
- 参数说明
- `id`: bgm 的`uri`,由于 bgm 是一类资源,因此`uri`为`bgms.xxx`的形式
- `data`: bgm 音频元素
- 方法说明
添加一个音乐
## load()
```ts
declare function load(id: string): void
```
- 方法说明
预先加载一个音乐,从而在播放音乐的时候不会产生卡顿
## changeTo()
```ts
declare function changeTo(id: string, when: number = -1, noStack: boolean = false): void
```
- 参考[切换音乐](../../guide/audio.md#切换-bgm)
## pause()
```ts
declare function pause(transition: boolean = true): void
```
- 方法说明
暂停音乐播放,继续播放时将会延续暂停的时刻
## resume()
```ts
declare function resume(transition: boolean = true): void
```
- 方法说明
继续当前 bgm 的播放,从上一次暂停的时刻开始播放
## play()
```ts
declare function play(id: string, when: number = 0, noStack: boolean = false): void
```
- 参考[切换音乐](../../guide/audio.md#切换-bgm)
## undo()
```ts
declare function undo(): void
```
- 方法说明
撤销当前播放,改为播放前一个 bgm
## redo()
```ts
declare function redo(): void
```
- 方法说明
取消上一次的撤销,改为播放上一次撤销的 bgm
## setTransition()
```ts
declare function setTransition(time?: number, curve?: TimingFn): void
```
- 方法说明
修改切歌的渐变信息,参考[设置渐变参数](../../guide/audio.md#设置渐变参数)
## get()
```ts
declare function get(id: string): HTMLAudioElement
```
- 参数说明
- `id`: 音乐的名称,不是 uri
- 方法说明
根据音乐的名称获取到对应的音频元素
## changeBgm 事件
```ts
interface BgmControllerEvent {
changeBgm: (ev: BgmEmits, id: string, before: string) => void
}
```
- 事件说明
当歌曲发生切换时触发,包括但不限于直接切歌、撤销、恢复。默认行为为切歌
## pause 事件
```ts
interface BgmControllerEvent {
pause: (ev: BgmEmits, id: string) => void
}
```
- 事件说明
当音乐暂停时触发,默认行为为暂停
## resume 事件
```ts
interface BgmControllerEvent {
resume: (ev: BgmEmits, id: string) => void
}
```
- 事件说明
当音乐继续播放时触发,默认行为为继续播放