前提・実現したいこと
Visual Studio上でDXライブラリを使用してゲームを作っています。
BGM以外の枠組みは完成しており最後に画面ごと(タイトル画面、ゲーム画面、リザルト画面etc)に異なるBGMを流そうとしています。
発生している問題・エラーメッセージ
エラーメッセージは出ることなくプログラムは動きますがPlaySoundMemがBGMを流しません。
LoadSoundMemでmp3ファイルを読み込みHandle_bgmに代入しています(Handle_bgm_aは複数のファイルを読み込む為に作成しておりファイルを増やすごとにbgm_b, c, d...と作成します)がDrawFormatStringで戻り値を確認したところ-1(エラー)を返していました。
以下はDXライブラリ置き場リファレンスページ(https://dxlib.xsrv.jp/function/dxfunc_sound.html)より抜粋
宣言 int LoadSoundMem( char *FileName ) ;
概略 音ファイルをメモリに読みこむ
引数 FileName : メモリに読みこむ音ファイルのファイル名
文字列のポインタ
戻り値 -1:エラー
-1以外:サウンドハンドル
該当のソースコード
C++
1//Main.cpp 2 3#include "DxLib.h" 4#include "Main.h" 5#include "Sound.h" 6 7extern int Handle_bgm; 8 9char Key[256]; 10 11int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, 12 LPSTR lpCmdLine, int nCmdShow) { 13 if (ChangeWindowMode(TRUE) != 0) { 14 return 0; 15 } 16 if (DxLib_Init() != 0) { 17 return 0; 18 } 19 if (SetDrawScreen(DX_SCREEN_BACK) != 0) { 20 return 0; 21 } 22 if (SetBackgroundColor(0, 0, 0) != 0) { 23 return 0; 24 } 25 PlaySoundMem(Handle_bgm, DX_PLAYTYPE_LOOP); 26 while (1) { 27 if (ScreenFlip() != 0) { 28 break; 29 } 30 if (ProcessMessage() != 0) { 31 break; 32 } 33 if (ClearDrawScreen() != 0) { 34 break; 35 } 36 if (GetHitKeyStateAll(Key) != 0) { 37 break; 38 } 39 Sound(); 40 } 41 DxLib_End(); 42 return 0; 43} 44 45//-------------------------------------------------- 46 47//Main.h 48 49#ifndef DEF_MAIN_H 50 51#define DEF_MAIN_H 52 53int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, 54 LPSTR lpCmdLine, int nCmdShow); 55 56#endif 57 58//-------------------------------------------------- 59 60//Sound.cpp 61 62#include "DxLib.h" 63#include "Main.h" 64#include "Sound.h" 65 66int Handle_bgm_a = LoadSoundMem("./Audio/testsound_a.mp3"); 67int Handle_bgm = Handle_bgm_a; 68 69void Sound() { 70 DrawFormatString(200, 300, GetColor(255, 255, 255), "BGM : %d", Handle_bgm); 71} 72 73//-------------------------------------------------- 74 75//Sound.h 76 77#ifndef DEF_SOUND_H 78 79#define DEF_SOUND_H 80 81void Sound(); 82 83#endif
試したこと
BGMと関係ないゲーム部分のコードを削りながら上記コードのようになるまで解決方法を模索しましたが状況の改善は全くありませんでした。
補足情報(FW/ツールのバージョンなど)
Microsoft Visual C++ 2019
DXライブラリ Windows版 Visual C++用 Ver3.22c
回答2件
あなたの回答
tips
プレビュー