mirror of
https://github.com/unanmed/HumanBreak.git
synced 2025-04-30 11:23:24 +08:00
159 lines
3.3 KiB
Markdown
159 lines
3.3 KiB
Markdown
# BgmController API 文档
|
||
|
||
本文档由 `DeepSeek R1` 模型生成并微调。
|
||
|
||
```mermaid
|
||
graph LR
|
||
BgmController --> EventEmitter
|
||
|
||
click EventEmitter "https://nodejs.org/api/events.html#class-eventemitter"
|
||
```
|
||
|
||
## 类描述
|
||
|
||
`BgmController` 是背景音乐系统的核心控制器,支持多 BGM 的加载、音量控制、渐变切换和播放状态管理。继承自 `EventEmitter`,提供完整的音频事件监听机制。
|
||
|
||
---
|
||
|
||
## 泛型说明
|
||
|
||
- `T extends string`: BGM 的唯一标识符类型(默认为项目预定义的 `BgmIds`)
|
||
|
||
---
|
||
|
||
## 属性说明
|
||
|
||
| 属性名 | 类型 | 描述 |
|
||
| ---------------- | --------- | ----------------------------------------- |
|
||
| `prefix` | `string` | BGM 资源路径前缀(默认 `bgms.`) |
|
||
| `playingBgm` | `T` | 当前正在播放的 BGM ID |
|
||
| `enabled` | `boolean` | 是否启用音频控制(默认 true) |
|
||
| `transitionTime` | `number` | 音频切换渐变时长(单位:毫秒,默认 2000) |
|
||
|
||
---
|
||
|
||
## 核心方法说明
|
||
|
||
### `setTransitionTime`
|
||
|
||
```typescript
|
||
function setTransitionTime(time: number): void;
|
||
```
|
||
|
||
设置所有 BGM 的渐变切换时长。
|
||
|
||
- **参数**
|
||
- `time`: 渐变时长(毫秒)
|
||
|
||
---
|
||
|
||
### `blockChange`
|
||
|
||
```typescript
|
||
function blockChange(): void;
|
||
```
|
||
|
||
### `unblockChange`
|
||
|
||
```typescript
|
||
function unblockChange(): void;
|
||
```
|
||
|
||
屏蔽/解除屏蔽 BGM 切换(用于特殊场景)。
|
||
|
||
---
|
||
|
||
### `setVolume`
|
||
|
||
```typescript
|
||
function setVolume(volume: number): void;
|
||
```
|
||
|
||
### `getVolume`
|
||
|
||
```typescript
|
||
function getVolume(): number;
|
||
```
|
||
|
||
控制全局音量(范围 0-1)。
|
||
|
||
---
|
||
|
||
### `setEnabled`
|
||
|
||
```typescript
|
||
function setEnabled(enabled: boolean): void;
|
||
```
|
||
|
||
启用/禁用整个 BGM 系统(禁用时停止所有播放)。
|
||
|
||
---
|
||
|
||
### `addBgm`
|
||
|
||
```typescript
|
||
function addBgm(id: T, url?: string): void;
|
||
```
|
||
|
||
加载并注册 BGM 资源。
|
||
|
||
- **参数**
|
||
- `id`: BGM 唯一标识
|
||
- `url`: 自定义资源路径(默认 `project/bgms/${id}`)
|
||
|
||
---
|
||
|
||
### `removeBgm`
|
||
|
||
```typescript
|
||
function removeBgm(id: T): void;
|
||
```
|
||
|
||
移除已注册的 BGM 资源。
|
||
|
||
---
|
||
|
||
### 播放控制方法
|
||
|
||
```typescript
|
||
function play(id: T, when?: number): void; // 播放指定 BGM(带渐变)
|
||
function pause(): void; // 暂停当前 BGM(保留进度)
|
||
function resume(): void; // 继续播放当前 BGM
|
||
function stop(): void; // 停止当前 BGM(重置进度)
|
||
```
|
||
|
||
---
|
||
|
||
## 事件说明
|
||
|
||
| 事件名 | 参数 | 触发时机 |
|
||
| -------- | ---- | ----------------- |
|
||
| `play` | `[]` | 开始播放新 BGM 时 |
|
||
| `pause` | `[]` | 暂停播放时 |
|
||
| `resume` | `[]` | 继续播放时 |
|
||
| `stop` | `[]` | 完全停止播放时 |
|
||
|
||
---
|
||
|
||
## 总使用示例
|
||
|
||
```typescript
|
||
import { bgmController } from '@user/client-modules';
|
||
|
||
// 设置全局参数
|
||
bgmCtrl.setTransitionTime(1500);
|
||
bgmCtrl.setVolume(0.8);
|
||
|
||
// 播放控制
|
||
bgmCtrl.play('battle.mp3'); // 播放战斗BGM
|
||
bgmCtrl.pause(); // 暂停(如打开菜单)
|
||
bgmCtrl.resume(); // 继续播放
|
||
bgmCtrl.play('boss_battle.mp3'); // 切换至BOSS战BGM
|
||
bgmCtrl.stop(); // 完全停止(如战斗结束)
|
||
|
||
// 事件监听
|
||
bgmCtrl.on('play', () => {
|
||
console.log('BGM 开始播放:', bgmCtrl.playingBgm);
|
||
});
|
||
```
|