2012-05-31 194 views
2

我實際上嘗試播放與FMOD的聲音,但它沒有奏效。FMOD不播放聲音C++

#ifndef __SOUND_HH__ 
#define __SOUND_HH__ 

#include <string> 
#include <fmodex/fmod.h> 

class Sound 
{ 
    FMOD_SYSTEM *sys; 

    FMOD_SOUND *explosion; 
    FMOD_RESULT resExplosion; 
    FMOD_CHANNEL *channel1; 

public: 
    Sound(); 
    ~Sound(); 

    void play(const std::string &); 
}; 

#endif 

#include <string> 
#include <iostream> 
#include "Sound.hh" 

Sound::Sound() 
{ 
    FMOD_System_Create(&this->sys); 
    FMOD_System_Init(this->sys, 1, FMOD_INIT_NORMAL, NULL); 
} 

Sound::~Sound() 
{ 
    FMOD_System_Release(sys); 
} 

但是當我做遊戲( 「mysound.wav」);在我的代碼沒有追加,我驗證返回值,沒有問題。所以有什麼想法?感謝

void Sound::play(const std::string &filename) 
{ 
    FMOD_System_CreateStream(this->sys, filename.c_str(), FMOD_HARDWARE | FMOD_LOOP_OFF | FMOD_2D, 0, &this->explosion); 
    FMOD_System_PlaySound(sys, FMOD_CHANNEL_FREE, explosion, 0 , &channel1); 
     std::cout << "playayayyayayayayya" << std::endl; 
} 
+0

你打開/關閉揚聲器了嗎?你有沒有試過通過媒體播放器播放聲音? –

+0

我試着在C中使用FMOD的其他項目,它的工作。我嘗試使用相同的聲音,並始終不工作 – ago

+0

哪裏是您要調用播放功能的代碼? –

回答

0

你不是動態分配Sound變量。

你需要的是:

Sound sound = new Sound();

sound->play("./sound/explosion.wav");

還是在Bombe::update做:

Sound sound;

sound.play("./sound/explosion.wav");

另請確保explosion.wav位於文件夾sound/中。

+0

非常感謝,我認爲這是工作,但FMOD沒有聲音,所有我的其他聲音工作。那個問題... – ago

+0

你檢查過該文件是否在你傳入的文件夾中?你還在做什麼操作系統? –

+0

是的,我在Ubuntu的x64上。這是奇怪的原因,因爲我過去使用FMOD並且它工作得很好。 – ago