2011-08-24 88 views
2

朋友你好开发商,BASS“播放”流

我有一个问题,我做的射击游戏,但我不知道如何当发生爆炸落实,因为爆炸是永远不变的声音可以在短时间内发生,即声音不会结束,并且会发生另一次爆炸。我的问题是,如何在同一个流中多次“播放”?

谢谢!

回答

0

假设我们正在谈论相同的Bass Audio API,请导航到BASS\Channels\Bass_ChannelPlay()的在线文档。致电Bass_ChannelPlay()传递您现有的爆炸手柄并将restart设置为true - 请参阅文档以获取更多信息。

1

这里是一个非常简单的例子:

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();