アカウント名:
パスワード:
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
アレゲは一日にしてならず -- アレゲ研究家
激薄皮ラップなクラス化してみた(ヘッダ部) (スコア:1)
#define AFX_FTEZSDLSOUND_H__8232A97C_E7A2_4391_B5B5_5BC07CE909CA__INCLUDED_
#include "../sdk/SDL-1.2.7/include/SDL.h"
#include "../sdk/SDL_mixer-1.2.5/include/SDL_mixer.h"
class FTEzSDLSound
{
private:
CMapWordToPtr m_mapMusic;
CMapWordToPtr m_mapSound;
int m_nMusicVolume; // 0-255
int m_nSoundVolume; // 0-255
enum { VOL_MAX=255 };
bool m_fOpenAudio;
bool m_fAutoSDLQuit;
public:
// 生成・消滅
FTEzSDLSound();
virtual ~FTEzSDLSound();
public:
// 初期化・開放 (通常は直接は使用しない)
bool Init();
bool Release();
// インスタンス消滅時に自動的にSDLQuitを呼ぶ
void SetAutoSDLQuit() { m_fAutoSDLQuit = true; }
// オープン・クローズ (オープン処理は必須)
bool OpenAudio( int nFreq = 44100 , WORD wFormat=AUDIO_S16 , int nChannnel=2 , int nChunksize=4096 );
bool CloseAudio();
// 曲・サウンドのロード、開放
bool LoadMusic( WORD wID , LPCSTR lpszFilename ); // ID,ファイル名 (IDは演奏時に使用)
bool LoadSound( WORD wID , LPCSTR lpszFilename );
bool ReleaseMusic( WORD wID );
bool ReleaseSound( WORD wID );
// 曲・サウンドの音量設定(0-255)
bool SetMusicVolume( int nVolume = 255);
bool SetSoundVolume( int nVolume = 255);
// 曲の演奏、停止、演奏中チェック
bool PlayMusic( WORD wID , int nLoops = 1 );
bool FadeInMusic( WORD wID , int nLoops = 1 , int nTime = 2000);
bool FadeOutMusic( int nTime = 2000);
bool StopMusic();
bool IsPlayingMusic();
// サウンドの再生、停止、生成中チェック
bool PlaySound( WORD wID , int nLoops = 0, int nVolume = 255);
bool StopSound();
bool IsPlayingSound();
// 内部使用メソッド
Mix_Music* GetMusicPtr( WORD wID );
Mix_Chunk* GetSoundPtr( WORD wID );
// Static
static bool SDLInit( DWORD dwFlags = SDL_INIT_AUDIO );
static void SDLDelay( int nTime );
static void SDLQuit();
};
#endif
使用例 (スコア:1)
FTEzSDLSound sound;
sound.Open(); // open (必須)
sound.LoadMusic( 1 , "bmg.wav" ); // BGM曲1ロード
sound.LoadSound( 1 , "se1.wav" ); // 効果音1ロード
sound.LoadSound( 2 , "se2.wav" ); // 効果音2ロード
sound.SetMusicVolume( 200 ); // BMG音量設定(0-255)
sound.PlayMusic( 1 ); // BGM曲1再生 (第2引数で再生回数指定可能)
while ( sound.IsPlayingMusic() ) { // BGM演奏中はwhileループ
FTEzSDLSound::SDLDelay( 1000 ); // 1000msウェイト
sound.PlaySound(1); // 効果音1を再生
FTEzSDLSound::SDLDelay( 1000 ); // 1000msウェイト
sound.PlaySound(2,0,128); // 効果音2を再生 (音量Volume=128と指定)
}
sound.StopSound(); // 効果音再生を停止
FTEzSDLSound::SDLQuit(); // SDL使用を終了