朋友你好開發商,BASS「播放」流
我有一個問題,我做的射擊遊戲,但我不知道如何當發生爆炸落實,因爲爆炸是永遠不變的聲音可以在短時間內發生,即聲音不會結束,並且會發生另一次爆炸。我的問題是,如何在同一個流中多次「播放」?
謝謝!
朋友你好開發商,BASS「播放」流
我有一個問題,我做的射擊遊戲,但我不知道如何當發生爆炸落實,因爲爆炸是永遠不變的聲音可以在短時間內發生,即聲音不會結束,並且會發生另一次爆炸。我的問題是,如何在同一個流中多次「播放」?
謝謝!
假設我們正在談論相同的Bass Audio API,請導航到BASS\Channels\Bass_ChannelPlay()
的在線文檔。致電Bass_ChannelPlay()
傳遞您現有的爆炸手柄並將restart
設置爲true
- 請參閱文檔以獲取更多信息。
這裏是一個非常簡單的例子:
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();