![]() |
|
|
首先定义一个声音文件句柄 //no.1 定义声音句柄 HEFFECT snd; 在手册中HEFFECT定义如下: HEFFECT A sound effect handle 声音效果句柄 这样我们就可以通过该句柄来操纵声音了。 然后在winmain函数中添加下面语句: //no.2 use BASS for sound hge->System_SetState(HGE_USESOUND, true); 在手册中对该系统状态这样描述: HGE_USESOUND 使用HGE声音特效还是取消使用。如果你不想使用BASS和你自己特有的声音程序或者如果你想把你的应用程序变成无声的你可以将它设定为假。这个状态可以在你想要的任何时候进行设定和更改。注意,关掉声音将会删除所有以前加载的声音资源。 默认值为 true 当然也要在我们程序的当前目录下放置bass.dll文件。 第三步我们使用下面的方法来载入我们需要用的声音文件。 //no.3 载入声音 snd=hge->Effect_Load("menu.mp3"); if(!snd ) //载入不成功,显示提示信息 MessageBox(NULL,"Don't load sound ! ","Error",MB_OK|MB_ICONERROR|MB_APPLMODAL); 我们来看一看HGE::Effect_Load函数: 他的左右就是从内存、资源包或者磁盘文件加载一个声音效果。 原型: HEFFECT Effect_Load(const char *filename,DWORD size = 0); 参数filename 表示 声音效果的文件名。 size 如果这个参数不为0,那么这个音效在内存中的大小就使用参数filename中所指定的这个指针。 返回值 如果成功,使用Effect_Play 和 Effect_PlayEx函数返回声音效果句柄。否则返回0。 该函数支持的音频文件格式很多,支持WAV, MP3, MP2, MP1 和 OGG音频文件格式。 第四步现在我们就可以播放声音了。 //no.4 播放声音 hge->Effect_PlayEx(snd,100,0,1.0f,true); 对于播放声音我们也可以使用HGE::Effect_Play函数,不过他的控制方面功能较弱所以我们可以使用HGE::Effect_PlayEx函数 使用方法: HCHANNEL Effect_PlayEx(HEFFECT effect,int volume = 100,int pan = 0,float pitch = 1.0,bool loop = false); 其中参数effect表示前面得到的 播放这个声音效果的句柄。 volume 从0到100的可以随意选择的音量大小。音量的最大值默认为100。 pan 从-100到100的可以随意选择的音量大小。面板中间的默认值是0。 pitch 任意效果的音调增效器。音调的默认值是1.0。 loop 可选择的参数。如果是真值,这个效果将一直循环到手动停止音轨。默认是假。 返回值. 返回音轨句柄使音效开始播放。用音轨控制函数来控制这个句柄。 第五步 所有的资源子要使用,最后在程序关闭时都要释放。 //no.5 释放声音资源 hge->Effect_Free(snd); HGE::Effect_Free函数 用来删除加载的声音效果并释放相关联的资源。 原型如下:void Effect_Free(HEFFECT effect); 参数 effect 表示 删除声音效果的控制句柄。 下面是源代码: /* ** Haaf's Game Engine 1.7 ** Copyright (C) 2003-2007, Relish Games ** hge.relishgames.com ** ** hge_tut01 - Minimal HGE application */ #include "..\..\include\hge.h" HGE *hge = 0; //no.1 定义声音句柄 HEFFECT snd; // This function will be called by HGE once per frame. // Put your game loop code here. In this example we // just check whether ESC key has been pressed. bool FrameFunc() { // By returning "true" we tell HGE // to stop running the application. if (hge->Input_GetKeyState(HGEK_ESCAPE)) return true; //像用WinAPI函数那样移动和调整HGE窗口大小。调整好窗口大小之后,HGE将会控制DirectX去迎合新窗口的尺寸: // MoveWindow(hge->System_GetState(HGE_HWND), 0, 0, 800, 600, true); 上一页12 下一页
上一篇:HGE Engine引擎的一个不错的入门教程 下一篇:haaf's
|