2011-09-07 108 views
2

我開始使用FMOD庫,因爲我需要在C#應用程序中無間隙地播放聲音(循環中的一個聲音和序列中的許多聲音)。任何人都可以告訴我正確的方法嗎?我嘗試了基於示例做出一些事情,但它不工作,因爲我希望它能夠工作。 首先,當我嘗試設置,如果聲音循環播放,在影片播放,FMOD無間斷循環和序列播放

if (value) 
    sound1.setMode(FMOD.MODE.LOOP_NORMAL); 
else 
    sound1.setMode(FMOD.MODE.LOOP_OFF); 

沒有是怎麼回事。在我開始播放之前,當我設置th模式時,它只能正常工作。

第二個問題是:我怎麼能通知聲音已達到結束?我試圖做這樣說:

channel.setCallback(eofCallback); 

其中eofCallback是一個參考SoundEndCallback

private FMOD.RESULT SoundEndCallback(IntPtr channelraw, FMOD.CHANNEL_CALLBACKTYPE type, IntPtr commanddata1, IntPtr commanddata2) 
    { 
     FMOD.RESULT result; 

     if (type == FMOD.CHANNEL_CALLBACKTYPE.END) 
     { 
      //logic here 
     } 
     return FMOD.RESULT.OK; 
    } 

但也只能達到這個回調時,我手動調用停止()的通道,軌道末端而不是當。

或者最終你知道任何其他圖書館,可以輕鬆地給我我需要什麼嗎?我選擇了FMOD,因爲它非常流行,但我不喜歡它的老式C++ - 比如編碼方式(沒有事件,沒有例外等)。

回答

0

要在運行時設置聲音的循環模式,使用Channel :: setMode,Sound :: setMode就像設置從該聲音播放的任何聲道的默認值(它不會影響當前播放的聲音)。

至於Channel :: setCallback,請確保定期調用System :: update以使回調觸發事件,如聲音播放到最後。

1

我有第二個問題的答案:要得到通知你必須先設置回調,如前所述,之後,你必須使用System.update()方法(它必須定期調用循環)。這是一種民意測驗,