【问题标题】:FMOD don't play sound C++FMOD 不播放声音 C++
【发布时间】:2013-06-13 21:46:56
【问题描述】:

我实际上尝试使用 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;
}

【问题讨论】:

  • 你打开/打开你的扬声器了吗?您是否尝试过通过媒体播放器播放声音?
  • 我尝试过使用 FMOD 的 C 语言中的另一个项目,它可以工作。我尝试使用相同的声音,但总是不起作用
  • 你调用播放函数的代码在哪里?
  • 我编写了一个炸弹人游戏,当炸弹爆炸时,我在类 Bomb 上调用 play 函数。我的班级有一个 Sound *_sound 变量。我在构造函数上执行 _sound = new Sound(),并在需要时调用 _sound->play(file)
  • 是的,我们需要查看代码,与您在游戏中的代码完全相同

标签: c++ fmod


【解决方案1】:

您没有动态分配 Sound 变量。

你需要的是:

Sound sound = new Sound();

sound-&gt;play("./sound/explosion.wav");

或者在Bombe::update做:

Sound sound;

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

还要确保explosion.wav 在文件夹sound/ 中。

【讨论】:

  • 非常感谢,我认为它的工作,但 FMOD 没有声音,我所有的其他声音工作。那是个问题...
  • 您是否检查过文件是否在您传入的文件夹中?还有你在什么操作系统上做这个?
  • 是的,我在 ubuntu x64 上。这很奇怪,因为我过去使用 FMOD 并且效果很好。
  • 这很奇怪,尝试传入另一个你知道有效的文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多