青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

劍孤寒的小站

人生的價值不是用時間,而是用深度去衡量的!
posts - 75, comments - 290, trackbacks - 0, articles - 0

    在一個優秀的游戲中,音樂和音效往往能起到畫龍點睛的作用,這一節我們就來學習如何在GGE中播放音樂和音效。
    GGE自帶了音頻解碼播放功能,不需要使用base或fmod等音效庫。在GGE中提供了一個Sound_Load()函數用于載入音樂和音效,支持wav和ogg格式的音頻文件,如果載入成功則返回一個ggeSound指針,例如:

   m_sound = Sound_Load("Fire1.ogg"); //載入音效
    m_music = Sound_Load("eyes on me.ogg"true); //載入音樂

    要載入音效只需簡單的調用Sound_Load()函數,并傳入音效文件名即可,如果是載入音樂的話,一般需要將音樂轉換成ogg格式,并且將Sound_Load()函數的第二個參數傳入true,表示以流方式載入。需要注意的是,以流方式載入的ogg文件比較節省內存(wav格式無效),但無法同一時間播放多次,例如碰到同時響起兩聲槍響這種情況,如果以流方式載入,調用兩次播放函數實際上只能聽到一聲槍響,所以音效一般不使用流方式載入。
    音樂和音效載入后都可以調用ggeSound::Play()函數來播放,播放時可以動態修改音量、頻率、聲道平衡,也可以暫停和恢復播放。例如在OnUpdate(float dt)函數中添加如下代碼對音樂和音效進行控制:

 switch (Input_GetKey())
        
{
        
case 'Q':
            m_music
->Play(true); //音樂循環播放
            break;

        
case 'W':
            m_music
->Stop();
            
break;

        
case 'A':
            m_music
->Pause();
            
break;

        
case 'S':
            m_music
->Resume();
            
break;

        
case 'Z':
            
if (m_musicVolume > 0) m_musicVolume--;
            m_music
->SetVolume(m_musicVolume);
            
break;

        
case 'X':
            
if (m_musicVolume < 100) m_musicVolume++;
            m_music
->SetVolume(m_musicVolume);
            
break;

        
case 'E':
            
if (m_soundVolume > 0) m_soundVolume--;
            m_sound
->SetVolume(m_soundVolume);
            
break;

        
case 'R':
            
if (m_soundVolume < 100) m_soundVolume++;
            m_sound
->SetVolume(m_soundVolume);
            
break;

        
case 'D':
            
if (m_soundPan > -100) m_soundPan--;
            m_sound
->SetPan(m_soundPan);
            
break;

        
case 'F':
            
if (m_soundPan < 100) m_soundPan++;
            m_sound
->SetPan(m_soundPan);
            
break;

        
case 'C':
            m_soundpPitch 
-= dt * 0.5f;
            
if (m_soundpPitch < 0) m_soundpPitch = 0;
            m_sound
->SetPitch(m_soundpPitch);
            
break;

        
case 'V':
            m_soundpPitch 
+= dt  * 0.5f;
            
if (m_soundpPitch > 10.0f) m_soundpPitch = 10.0f;
            m_sound
->SetPitch(m_soundpPitch);
            
break;

        
case VK_SPACE:
            m_sound
->Play();
            
break;
        }

    因為音樂是以流方式載入的,每次按下Q鍵會讓音樂重新開始播放,音效不是以流方式載入的,所以每次按下空格鍵即使之前的音效沒播放完也能聽到新的聲音。
    在GGE中還提供了一個ggeMusic模塊,這個是專門用來播放midi音樂的,不過這個現在用得比較少,就不詳細介紹了,大致使用方法跟ggeSound一樣,如果有需要可以查看文檔。


Feedback

# re: Galaxy2D游戲引擎教程6 - 音樂和音效[未登錄]  回復  更多評論   

2010-04-23 17:01 by 小白
期待博主什么時候來個小型完整的RPG游戲教材就好了,方便下我們這些個新手

# re: Galaxy2D游戲引擎教程6 - 音樂和音效  回復  更多評論   

2010-04-24 18:07 by 劍孤寒
嗯,如果有時間的話會弄一個綜合性的小游戲來做教材,真希望一天能有48小時,可以每天有點時間做自己的東西啊-_-

# re: Galaxy2D游戲引擎教程6 - 音樂和音效[未登錄]  回復  更多評論   

2010-04-25 12:41 by 斷桿破槍頭
3.1
ggeFont 里的print函數是不是有問題啊?

我在代碼里面
初始坐標是300,200
移動增量是1.5
m_RolePosFon->print(680,30,"角色坐標: %d,%d",m_RolePos.x,m_RolePos.y);
坐標顯示有問題 還是我用的有問題呢

# re: Galaxy2D游戲引擎教程6 - 音樂和音效[未登錄]  回復  更多評論   

2010-04-25 15:03 by 斷桿破槍頭
截圖的函數是不是也有問題啊

老是默認生成一個這個文件 snapshot.png

我代碼是這樣的
PATH_GAME_SCRNSHOT 宏定義為"ScrnShot\\"目錄下面

if (Input_IsKeyDown(GGEK_F12))
{
char fnstr[200];
static SYSTEMTIME t;
GetSystemTime(&t);
sprintf(fnstr,"%sSword%d%d%d_%d.jpg",PATH_GAME_SCRNSHOT,
t.wYear,t.wMonth,t.wDay,
GetTickCount());
Graph_Snapshot(fnstr,IMAGE_JPG);
}

# re: Galaxy2D游戲引擎教程6 - 音樂和音效  回復  更多評論   

2010-04-26 09:17 by 劍孤寒
@斷桿破槍頭
1.請確定m_RolePos.x和m_RolePos.y是否是浮點數,如果是,應該這樣調用:m_RolePosFon->print(680,30,"角色坐標: %f,%f",m_RolePos.x,m_RolePos.y);
2.可能是因為跟默認的截圖快捷鍵沖突了,你可以試著換一個按鍵作為截圖鍵看看是否有效,下個版本加一個默認截圖按鍵開關好了

# re: Galaxy2D游戲引擎教程6 - 音樂和音效[未登錄]  回復  更多評論   

2010-04-26 16:22 by 斷桿破槍頭
第二個問題解決了,第一個問題加類型轉換就好了(int)

# re: Galaxy2D游戲引擎教程6 - 音樂和音效[未登錄]  回復  更多評論   

2010-04-26 19:09 by 斷桿破槍頭
大場景卷動 怎么做啊 ?
就是你那個演示里面 地圖的移動

# re: Galaxy2D游戲引擎教程6 - 音樂和音效  回復  更多評論   

2010-04-27 11:47 by 劍孤寒
這個可以用ggeImage來實現,
先用ggeImage載入地圖:
ggeImage *MapImage = Image_Load("map.jpg");
可以載入任意大小的圖片,
不受顯卡最大紋理尺寸的限制,
(因為像《軒轅劍3》等游戲有些地圖尺寸是非常大的,
如果超過了顯卡的最大紋理尺寸地圖就顯示不出來了,
用ggeImage就不用擔心這個問題了)

然后再用下面的代碼把地圖畫出來:
MapImage->SetRect((int)sceneX, (int)sceneY, (int)sceneX + ScreenWidth, (int)sceneY + ScreenHeight);
MapImage->Render(0, 0);

調用ggeImage::SetRect()函數設置要顯示的地圖區域,
ScreenWidth和ScreenHeight表示屏幕尺寸,
如果你的屏幕大小為640x480,
則ScreenWidth=640,ScreenHeight = 480,
sceneX和sceneY為地圖顯示區域左上角坐標,
假設主角的實際坐標為(400, 400),
為了讓主角在屏幕中間即主角的坐標屏幕坐標為(320, 240),
所以要將地圖往左上角移動,
即sceneX = 400 - 320; sceneY = 400 - 240;
最后調用ggeImage::Render()將地圖畫出來就可以了

# re: Galaxy2D游戲引擎教程6 - 音樂和音效[未登錄]  回復  更多評論   

2015-10-03 13:39 by shepherd
正在寫一個語音播放類,發現老是出錯,就做了個簡單的演示程序。
具體問題是:加載同一個聲音資源后,不疊加,一次一次的播放沒問題,但是疊加播放就出錯。大神幫忙看一下唄。
#include <stdlib.h>
#include "inc/ggebase.h"
#include "inc/ggesound.h"

using namespace gge;

ggeSound *st;
gUInt changing_color = 0xFFFFFFFF;

//幀函數
bool Frame()
{
//開始渲染
if (Graph_BeginScene())
{
//清屏
Graph_Clear();

if(Input_GetKey() == VK_SPACE)
{
changing_color = 0xFF000000 + (gUInt)(rand() * 0xFFFFFF);
st->PlayEx();
}
Graph_RenderQuad(100.0f, 120.0f, 140.0f, 160.0f, changing_color);

//結束渲染
Graph_EndScene();
}
return false;
}

int main(HINSTANCE, HINSTANCE, LPSTR, int)
{
//創建游戲引擎
if (!Engine_Create(GGE_VERSION)) return 0;

System_SetState(GGE_TITLE, "Galaxy2D Game Engine - Initiate");
//設置幀函數
System_SetState(GGE_FRAMEFUNC, Frame);
//設置幀率
System_SetState(GGE_FPS, 60);
System_SetState(GGE_USESOUND, true); //是否開啟聲音:是


//系統初始化
if (System_Initiate())
{
st = Sound_Load("d://1.wav", false);
//開始運行幀函數
System_Start();
}

//關閉引擎,釋放資源
Engine_Release();
return 0;
}

# re: Galaxy2D游戲引擎教程6 - 音樂和音效  回復  更多評論   

2015-10-04 19:01 by 劍孤寒
@shepherd
已經修復了,請下載最新版引擎,感謝反饋
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久久久久国产精品一区| 欧美日韩伦理在线免费| 亚洲国产精品成人综合色在线婷婷 | 免费国产自线拍一欧美视频| 欧美在线视频在线播放完整版免费观看| 一区二区三区免费在线观看| 亚洲视频综合| 欧美一区二区播放| 媚黑女一区二区| 亚洲丁香婷深爱综合| 99视频有精品| 欧美亚洲在线视频| 欧美α欧美αv大片| 欧美三级乱人伦电影| 国产精品丝袜久久久久久app| 国产欧美在线观看一区| 亚洲高清123| 亚洲一区二区在线| 久热爱精品视频线路一| 亚洲激情视频网站| 国产一级精品aaaaa看| 亚洲高清不卡一区| 亚洲欧美日韩国产综合在线 | 亚洲人人精品| 午夜免费日韩视频| 亚洲国产第一| 欧美一区日本一区韩国一区| 欧美激情一区二区三区| 国产一区二区三区四区hd| 一本到12不卡视频在线dvd| 欧美一区日韩一区| 亚洲精品欧洲| 久久亚洲国产成人| 国产精品区二区三区日本| 亚洲欧洲日产国码二区| 久久九九久精品国产免费直播| 亚洲成色777777在线观看影院| 亚洲一区欧美| 欧美福利视频网站| 国产一区二区电影在线观看| 亚洲在线一区| 欧美激情自拍| 欧美资源在线观看| 国产伦精品一区二区三区视频孕妇| 日韩亚洲一区在线播放| 免费成人在线观看视频| 久久国产精品亚洲77777| 国产麻豆综合| 亚洲男女自偷自拍图片另类| 亚洲国产精品999| 性欧美办公室18xxxxhd| 欧美日韩免费区域视频在线观看| 精品88久久久久88久久久| 性欧美超级视频| 这里只有精品在线播放| 欧美激情麻豆| 亚洲国内精品在线| 免播放器亚洲一区| 久久蜜桃香蕉精品一区二区三区| 国产一区二区三区日韩欧美| 久久九九全国免费精品观看| 亚洲男人第一网站| 国产精品日韩精品| 久久不见久久见免费视频1| 亚洲一区免费观看| 国产一区二区三区在线播放免费观看 | 在线视频你懂得一区| 欧美视频久久| 亚洲欧美日韩国产中文| 亚洲影院免费| 国产一区白浆| 欧美 日韩 国产精品免费观看| 久久综合久久综合久久| 日韩午夜三级在线| 一区二区不卡在线视频 午夜欧美不卡在| 欧美精品日韩一本| 亚洲免费影视| 欧美中文在线免费| 亚洲国产一区二区三区在线播| 亚洲国产成人精品久久| 欧美日韩久久| 欧美亚洲免费高清在线观看| 亚洲婷婷综合久久一本伊一区| 亚洲一区二区三区乱码aⅴ蜜桃女 亚洲一区二区三区乱码aⅴ | 亚洲黄色影片| 亚洲精选大片| 国产一区二区三区精品久久久| 欧美激情在线狂野欧美精品| 国产精品va| 欧美高清在线视频| 国产精品va在线播放| 老牛嫩草一区二区三区日本| 欧美成人中文字幕| 欧美一区二区成人| 老色鬼久久亚洲一区二区| 中文网丁香综合网| 久久精品亚洲一区二区| 一二三区精品福利视频| 久久国产直播| 在线一区欧美| 久久婷婷av| 欧美一区二区日韩| 欧美高清视频一区二区| 欧美激情精品久久久久久久变态| 欧美视频精品在线| 久久综合久久综合九色| 欧美久久电影| 久久青草欧美一区二区三区| 欧美黄色小视频| 久久综合狠狠综合久久激情| 国产精品swag| 亚洲精品一区二区三区蜜桃久 | 欧美不卡高清| 性欧美精品高清| 欧美日韩国产美| 欧美高清视频一区| 国精品一区二区| 亚洲一区美女视频在线观看免费| 在线亚洲美日韩| 欧美久色视频| 亚洲经典三级| 亚洲精品乱码久久久久久日本蜜臀 | 欧美在线播放视频| 午夜亚洲性色视频| 欧美日韩亚洲国产一区| 亚洲激情一区| 亚洲精选视频在线| 欧美夫妇交换俱乐部在线观看| 欧美成人视屏| 亚洲激情午夜| 欧美阿v一级看视频| 欧美激情中文字幕一区二区| 亚洲人体偷拍| 欧美精品在线观看| 亚洲美女在线视频| 欧美在线日韩| 久久综合九色| 亚洲二区视频| 免费在线亚洲| 亚洲国产黄色| 99国产精品| 欧美婷婷久久| 亚洲欧美变态国产另类| 欧美一级二区| 国产一区二区在线观看免费| 欧美专区日韩视频| 欧美电影资源| 一区二区欧美在线观看| 欧美午夜精品久久久| 亚洲欧美区自拍先锋| 久久青草福利网站| 亚洲人线精品午夜| 国产精品久久久久久久久免费| 国产一区在线视频| 亚洲欧美日韩一区二区在线| 久久精品国产在热久久| 亚洲丰满少妇videoshd| 欧美精品日韩综合在线| 亚洲字幕一区二区| 久久蜜桃精品| 亚洲另类在线视频| 国产精品麻豆va在线播放| 亚洲欧美日韩精品久久| 美女视频黄 久久| 99这里只有精品| 国产欧美日韩麻豆91| 免费久久99精品国产| 欧美激情精品久久久| 亚洲一区二区视频在线观看| 免费成人av| 亚洲永久精品国产| 在线播放豆国产99亚洲| 欧美日韩精品二区第二页| 亚洲欧美日韩在线播放| 91久久国产精品91久久性色| 小黄鸭精品aⅴ导航网站入口| 在线免费观看视频一区| 国产精品av一区二区| 久久亚洲免费| 亚洲欧美日韩爽爽影院| 亚洲人www| 嫩草影视亚洲| 欧美一区二区视频观看视频| 日韩小视频在线观看专区| 好吊妞**欧美| 国产伦精品一区二区三区视频孕妇 | 亚洲欧美美女| 日韩午夜在线观看视频| 国产在线日韩| 国产精品久久久久久久久久免费看| 久久久久国产成人精品亚洲午夜| 99这里只有精品| 亚洲国产99精品国自产| 久久视频国产精品免费视频在线| 牛夜精品久久久久久久99黑人| 亚洲日本在线视频观看| 国产精品va在线播放我和闺蜜| 久久综合给合久久狠狠狠97色69| 蜜桃av噜噜一区二区三区| 夜夜爽av福利精品导航|