我实际上尝试用FMOD播放声音,但是没有用。
#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;
}
最佳答案
您不是在动态分配Sound
变量。
您需要的是:Sound sound = new Sound();
sound->play("./sound/explosion.wav");
或者在Bombe::update
中执行:Sound sound;
sound.play("./sound/explosion.wav");
还要确保explosion.wav
在文件夹sound/
中。
关于c++ - FMOD不播放声音C++,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10835476/