Chat Messages: components 201-220

This commit is contained in:
ZacharyZhang-NY committed 2026-10-05 14:25:10 -04:00
1 parent 6f0c02d339
commit 9677fad17c
121 files changed
+5737 -1

No files matched your search

+41
View File
@@ -0,0 +1,41 @@
# 211 AudioMessage 语音消息
## 用途
语音条:播放/暂停按钮、波形、播放进度与时长。播放由调用方驱动:组件只报告播放切换与跳转请求,调用方更新 Position 与 Playing。波形基于 MyGo `ui.SliderBase`,可拖动与键盘跳转。
## 最小示例
```go
r := mujica.AudioMessage(c, mujica.AudioMessageOptions{Duration: time.Minute, Position: pos})
if d, ok := r.Seek(); ok {
pos = d
}
```
签名:`func AudioMessage(c *ui.Context, opts AudioMessageOptions) AudioMessageResult`
## 参数
| 字段 | 类型 | 默认值 | 含义 |
| --- | --- | --- | --- |
| `Duration` | `time.Duration` | 必填 | 时长,必须大于 0。 |
| `Position` | `time.Duration` | 0 | 当前进度,0 到 Duration 之间,否则 panic。 |
| `Playing` | `bool` | false | 按钮显示暂停(播放中)或播放。 |
| `Waveform` | `[]float32` | nil | 0 到 1 的响度采样,按宽度重采样为竖条;为空画平线;越界 panic。 |
## 状态
已播放的竖条为 AccentText,未播放为半透明 TextMuted,当前位置另有一条竖线,进度不只靠颜色表达;右侧显示 `m:ss / m:ss`。
## 事件
`Toggled()`:按下播放或暂停。`Seek()`:点击、拖动或按键请求的新位置。
## 键盘操作
Tab 到播放按钮(Enter 或 Space)与波形;波形上 Left/Right(Up/Down)按时长的 1% 移动,Home、End 到开头与结尾。
## 限制
- 不解码音频、不生成波形:采样由调用方提供。