2011-08-25 33 views
2

我用這個:FMOD通道setVolume不起作用

err = channel->setVolume(someVolumeBetween0and1); 

即使犯錯是FMOD_OK,音量也不會改變。難道我做錯了什麼?有什麼方法可以改變聲音(頻道)的音量嗎?是否有其他音量範圍而不是[0,1]?

謝謝!

編輯:我使用setVolume緊接在該:

err = soundSystem->playSound(FMOD_CHANNEL_FREE, sound, false, &channel); 
+0

我認爲你需要發佈多一點的代碼,設置量基本相當。您是否嘗試過使用setVolume調用修改播放示例?這與你的代碼有什麼不同? –

回答

5

我發現一些有關卷在FMOD手冊: 「當聲音播放時,它會使用聲音的默認頻率,音量,平移,音量和優先級... 要在聽到聲音之前更改通道屬性,請通過將暫停標誌設置爲true並調用相關通道功能來啓動通道,然後取消暫停Channel :: setPaused

所以,正確的代碼應該是這樣的:

err = soundSystem->playSound(FMOD_CHANNEL_FREE, sound, true, &channel); 
err = channel->setVolume(someVolumeBetween0and1); 
err = channle->setPaused(false); 
1

我不是100%肯定,但聲音可能需要停止設置音量來解鎖和恢復播放聲音前/暫停在音量設定後。

其他要檢查的事情可能是聲音在正確的聲道上播放(或者您正在將聲音設置在正確的聲道上)。聲音是否被鎖定?聲音是可能覆蓋音量的通道組的一部分(儘管FMOD文檔說通道組應該縮放而不是覆蓋)?

2

變化setVolume和playSound的秩序,它的作品在我的項目

0

我有這個問題使用FMOD,並走了很多這些相同的道路。我嘗試暫停聲音。我想知道是不是因爲我的聲音被打了。

最後它完全是一個應用程序問題。我沒有使用正確的通道對象。

有沒有必要暫停以改變音量。播放聲音的時間點最初暫停,然後將音量設置爲非默認值,然後取消暫停聲音,這是爲了避免在默認音量下短暫播放該聲音。

0

試試這個

result = channle->setPaused(false);//after you set volume