2021SC@SDUSC
一、前言
1.说明
audio 说明文档地址
audio package - github.com/hajimehoshi/ebiten/v2/audio - pkg.go.dev
本文中所有截图和代码均来自说明文档或 ebiten 源文件
笔者负责 audio 音频相关的代码分析
2.梗概
阅读,解析一下 audio 包中的 audio.go 中的方法
二、audio
1.总体介绍
audio 提供音频播放器。
音频上下文(audio.context对象)可以指定的采样率,并且要播放的所有流必须使用相同的采样率。
不过,audio/mp3 包中的解码器会自动调整采样率,如果使用这些解码器,就可以不用在意采样率。
音频上下文可以生成“播放器”(audio.Player对象),通过调用播放器的 play 函数来播放。当多个播放器播放时,会自动混合。但是,多个的播放器可能会导致失真。
2.Context
上下文表示音频的当前状态。
一个进程中最多可以存在一个上下文对象。
这意味着在一个应用程序中只有一个恒定采样率有效。
NewContext 使用给定的采样率创建新的音频上下文。
采样率还用于解码带有 audio/MP3 包的 MP3,或其他格式作为目标采样率。采样率应为44100或48000。
当已经存在创建的音频上下文时,NewContext 混乱。
CurrentContext 返回当前上下文,如果没有上下文,则返回 nil。
IsReady 返回一个布尔值,指示音频是否准备就绪。
在某些浏览器上,启动音频需要用户交互,如单击或按键。
除非有播放器,否则音频上下文永远不会就绪。
当用户在上下文准备就绪后尝试播放音频时会出现上述问题。
返回采样率
3.hook
hook 一种状态抓钩
包含三个主要方法
暂停时
继续播放时
AppendHookOnBeforeUpdate 追加在主更新函数之前运行的钩子函数
根方法在