在HGE裏添加音頻的方法網上很多地方都有寫過,HGE的官方例子裏也有。但是有了音樂後怎麼控制呢?我摸索了下,用的是這種方法:
首先,在全局申明中定義以下三個變量:
HEFFECT backMusic;
HCHANNEL backMusicChannel;
int volume;//音量
然後在主函數WinMain的System_Initiate()之後添加以下語句:
backMusic = hge->Effect_Load("yumantang.mp3");//將電腦中的音頻文件關聯進來,支持的格式有WAV, MP3, MP2, MP1 和OGG。
backMusicChannel = hge->Effect_PlayEx(backMusic,volume,0,90.0f,true);//開始播放音頻,並將聲道存在backMusicChannel中以便後續對其進行操作。Effect_PlayEx函數的五個參數分別爲音頻資源(HEFFECT)、音量(0~100)、左右聲道音量分配(-100~100)、播放頻率、是否循環等。
hge->Channel_SetVolume(backMusicChannel,volume);//設置音量。雖然上面的函數已經設置了音量,但是這裏還是重新設置一下。因爲不知道爲什麼,我發現上面那個函數對音量的控制不是很好。不管我怎麼改volume,初始音量貌似都是同一個值。
最後,在FrameFunc()中添加對音量的實時控制語句:
if( (hge->Input_GetKeyState(HGEK_ADD) || hge->Input_GetKeyState(HGEK_EQUALS)) && volume<100 )
{
volume++;
hge->Channel_SetVolume(backMusicChannel,volume);
}
if( (hge->Input_GetKeyState(HGEK_SUBTRACT) || hge->Input_GetKeyState(HGEK_MINUS)) && volume>0 )
{
volume--;
hge->Channel_SetVolume(backMusicChannel,volume);
}
這樣,每當用戶按小鍵盤上的+、-,或主鍵盤上的=、-時音量就會隨之改變。