DXライブラリ SoundMem 音楽 効果音 再生 試作メモ

アバター
LDR
記事: 0
登録日時: 11年前
連絡を取る:

DXライブラリ SoundMem 音楽 効果音 再生 試作メモ

投稿記事 by LDR » 11年前

VC++2008EEで作業 DXライブラリ使用
サンプルプログラミングの館 10 RPGのサンプル参考
音楽・効果音をメモリにロードしておき、メインの処理で呼び出し再生するテスト。

CODE:

//main.cpp

#define LOAD

#include "DxLib.h"
#include "SysLoad.h"

int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
	//ウィンドウモード変更と初期化と裏画面設定
	ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen( DX_SCREEN_BACK ); 

	SysLoad();//システムデータロード SysLoad.cpp内の処理を呼んでいる

	//画面更新 & メッセージ処理 & 画面消去
    while( ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0 ){

		Bgm();//音楽再生

		if(CheckHitKey(KEY_INPUT_Z)==1){//Zボタン押すと

			//効果音再生 sys_se[x]内にSysLoad.cppで音声ファイルを設定している
			PlaySoundMem(sys_se[3],DX_PLAYTYPE_BACK);//指定メモリの音再生
		}
    }

	DxLib_End();
	return 0;
}

CODE:

//SysLoad.h
#include "DxLib.h"

//main.cppのみここを通る 
#ifdef LOAD

//音変数
int bgm_sound[2];//音楽用
int sys_se[4];	//効果音用

//以下、main関数で呼ぶためのetern宣言。ソリューションエクスプローラーの通りに書いてある。

//load.cpp
extern void Bgm();
extern void SysLoad();

//main.cpp以外ではココを通る
#else

//音変数
extern int bgm_sound[2];
extern int sys_se[4];

#endif //LOAD

CODE:

//SysLoad.cpp

#include "SysLoad.h"

void SysLoad(){//データのロード
	
	bgm_sound[0]=LoadSoundMem("BGM/title.ogg");     //タイトル

		if(  bgm_sound[0] == -1 ){//読込エラーがないか確認用
			MessageBox( NULL, TEXT( "Error!!" ), TEXT( "サウンドの再生に失敗" ), MB_OK );
		}

	bgm_sound[1]=LoadSoundMem("BGM/sato_01.ogg");   //フィールド

	sys_se[0]=LoadSoundMem("SystemFile/Enter.ogg");   //決定
	sys_se[1]=LoadSoundMem("SystemFile/Cancel.ogg");  //キャンセル
	sys_se[2]=LoadSoundMem("SystemFile/Cursor.ogg");  //カーソル移動
	sys_se[3]=LoadSoundMem("SystemFile/MenuOpen.ogg");//Fメニュー
	
	return ;
}

CODE:

//Bgm.cpp
#include "SysLoad.h"

void Bgm(){

	if(CheckSoundMem(bgm_sound[0])==0)//マップ用のサウンドが流れていなかったら流す
		PlaySoundMem(bgm_sound[0],DX_PLAYTYPE_LOOP);//タイトル音楽再生
	return ;
}
取りあえず動いたのでメモ。
細かいところはまだ理解していないので、各コードがどう処理されているのか理解深める。
この形で流用していけるのか、不具合は無いのか考えるのをやめない事。
自戒。
添付ファイル

[拡張子 zip は無効化されているため、表示できません]


コメントはまだありません。