音频缓冲区

您可以使用音频缓冲区加载、保存和操作游戏中的音频文件。这些缓冲区是事先使用适当的缓冲区函数创建的,然后可以使用以下函数创建项目中使用的声音:

 

请注意,从音频缓冲区创建声音后,您不会在内存中创建新声音,而是指向缓冲区内存储声音的位置。在声音与该缓冲区关联后,不应更改该缓冲区,否则会得到意外结果,并且在声音与该缓冲区关联时无法删除该缓冲区。相反,首先释放声音(或多个声音),然后删除缓冲区。

从缓冲区创建新的音频资源后,您可以在任何常规音频函数中使用其索引值来播放它、更改其增益或音调、暂停它等。请注意,用于加载音频的缓冲区{ }只能支持 PCM 声音,因此不支持 OGG 等格式。

音频缓冲区队列

缓冲音频的另一个函数是,您可以使用缓冲区创建音频队列,然后将其传输到运行项目的设备。音频队列采用您之前已填充音频数据的常规缓冲区,并使您能够"指向"它的一部分,并告诉GameMaker以给定的顺序从该缓冲区流式传输音频。音频队列的可用函数包括:

创建队列后,您可以像使用任何正常声音的声音索引一样使用返回的队列索引来播放、暂停、重新启动或更改其增益和音调。唯一做不到的是获取音轨长度或设置音轨位置,但除此之外,音频队列可以像任何其他声音一样使用。您还应该注意,一些音频队列函数也会触发音频回放异步事件

记录

音频缓冲区还允许您录制来自任何可用源(如麦克风或操作系统)的声音,然后可以使用上述函数(例如)排队和流式传输。录制音频将触发音频录制异步事件,该事件将包含关于正在录制的内容的特定信息。

录音函数如下:

 

注意除 HTML5以外的大多数平台都支持以某种形式录制音频,但这并不意味着所有设备都会允许录制,即使平台允许,因此您应始终检查audio_get_recorder_count()函数返回大于0的值,以在使用其余录制函数之前验证录音设备是否可用。