你好朋友开发者,
我有个问题,我在做一个射击游戏,但是我不知道当爆炸发生时如何实现,因为爆炸总是一样的声音结束,并且可以在很短的时间内发生,即声音不均匀结束并发生另一次爆炸。我的问题是,如何在同一个流中多次“播放”?
谢谢!
这是一个非常简单的例子:
int device = -1; // Default Sounddevice
int freq = 44100; // Sample rate (Hz)
HSTREAM streamHandle; // Handle for open stream
/* Initialize output device */
BASS_Init(device, freq, 0, 0, NULL);
/* Load your soundfile and play it */
streamHandle = BASS_StreamCreateFile(FALSE, "your_file.mp3", 0, 0, 0);
BASS_ChannelPlay(streamHandle, FALSE);
/* As very last, close Bass */
BASS_Free();
虽然此示例仅播放一次声音文件,但您可以在每次需要声音时创建一个新句柄。但是BASS_Init()
并且BASS_Free()
只需要运行一次。
另一种解决方案是将声音作为样本播放:
HSAMPLE streamHandle; // Handle for sample
HCHANNEL channel; // Handle for open channel of the sample
/* Initialize output device */
BASS_Init(device, freq, 0, 0, NULL);
/* Load sample and play it */
streamHandle = BASS_SampleLoad(FALSE, "your_file.mp3", 0, 0, 0);
channel = BASS_SampleGetChannel(streamHandle, FALSE);
/* Once you are done with your sample you should free it */
BASS_SampleFree(streamHandle);
/* As very last, close Bass */
BASS_Free();
假设我们谈论的是相同的Bass Audio API,然后导航到BASS\Channels\Bass_ChannelPlay()
. 调用Bass_ChannelPlay()
传递您现有的爆炸句柄并设置restart
为true
- 有关更多信息,请参阅文档。