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

劍孤寒的小站

人生的價值不是用時間,而是用深度去衡量的!
posts - 75, comments - 290, trackbacks - 0, articles - 0
前面兩個教程只是簡單的在屏幕上畫了個方塊,這一節(jié)里我們將學習一些有趣的東西:精靈和動畫。
   
打開上一個教程的工程,將main.cpp修改為以下內容:
#include "ggefw/ggefw.h"
#include 
"ggebase.h"
#include 
"ggesprite.h"
#include 
"ggeanimation.h"
#include 
"ggetexture.h"
using namespace gge;

class CGameMain:public ggeApplication
{
public:
    CGameMain()
    
{
        m_curTex    
= 0;
        m_curSpr    
= 0;

        m_aniTex    
= 0;
        m_downAni    
= 0;
        m_upAni        
= 0;

        m_dir        
= 0;
        m_scale        
= 1.0f;
        m_scaleDt    
= 0.4f;
    }


    
//系統(tǒng)設置
    void OnConfig()                    
    
{
        System_SetState(GGE_TITLE, 
"Galaxy2D Game Engine - 精靈和動畫");
    }


    
//刷新
    void OnUpdate(float dt)
    
{
        
//刷新動畫
        m_downAni->Update(dt);
        m_upAni
->Update(dt);

        m_dir 
+= dt;
        
if (m_scale > 1.5f)
        
{
            m_scale 
= 1.5f;
            m_scaleDt 
= -m_scaleDt;
        }

        
else if (m_scale < 0.5f)
        
{
            m_scale 
= 0.5f;
            m_scaleDt 
= -m_scaleDt;
        }
;
        
        m_scale 
+= m_scaleDt * dt;
    }


    
//渲染
    void OnRender()
    
{
        
//清屏
        Graph_Clear();

        
//繪制精靈
        m_picSpr->Render(00);
        m_picSpr
->RenderStretch(64015096);
        m_picSpr
->Render4V(1800220321806422096);
        m_picSpr
->SetHotSpot(2448);
        m_picSpr
->RenderEx(64200, m_dir, m_scale);
        m_picSpr
->SetHotSpot(00);

        
//播放動畫
        m_downAni->Render(0320);
        m_downAni
->SetHotSpot(2448);
        m_downAni
->RenderEx(160340, m_dir, m_scale);
        m_downAni
->SetHotSpot(00);
    }


    
//初始化
    bool OnInitiate()
    
{
        
//設置光標
        m_curTex = Texture_Load("cursor.png");
        
if (!m_curTex) return false;
        m_curSpr 
= Sprite_Create(m_curTex);
        
if (!m_curSpr) return false;
        SetCursor(m_curSpr);

        m_aniTex 
= Texture_Load("ani.png");
        
if (!m_aniTex) return false;

        
//創(chuàng)建精靈
        m_picSpr = Sprite_Create(m_aniTex, 004896);
        
if (!m_picSpr) return false;

        
//創(chuàng)建動畫
        m_downAni = Animation_Create(m_aniTex, 444896);
        
if (!m_downAni) return false;
        m_upAni      
= Animation_Create(m_aniTex, 4448960192);
        
if (!m_upAni) return false;

        
//可以把一個動畫的內部精靈指針設為光標以實現(xiàn)動畫光標
        
//SetCursor(m_downAni->GetSprite());

        
//開始播放動畫
        m_downAni->Play();
        m_upAni
->Play();

        
return true;
    }


    
//釋放資源
    void OnRelease()
    
{
        SAFE_RELEASE(m_curSpr);
        SAFE_RELEASE(m_curTex);

        SAFE_RELEASE(m_aniTex);
        SAFE_RELEASE(m_downAni);
        SAFE_RELEASE(m_upAni);
    }


private:
    ggeTexture        
*m_curTex;
    ggeSprite        
*m_curSpr;

    ggeSprite        
*m_picSpr;

    ggeTexture        
*m_aniTex;
    ggeAnimation    
*m_downAni;
    ggeAnimation    
*m_upAni;

    
float            m_dir;
    
float            m_scale;
    
float            m_scaleDt;
}
;

int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
    CGameMain GameMain;
    GameMain.Start();

    
return 0;
}


這里新增了兩個函數(shù):OnInitiate()/OnRelease()OnInitiate()用于游戲啟動時做一些初始化的工作,比如載入貼圖、創(chuàng)建精靈和動畫等,OnInitiate()函數(shù)的返回值是bool類型的,這意味著可以返回一個值告訴游戲框架初始化是否成功,如果初始化失敗游戲程序會自動退出。OnRelease()則用于做一些清理的工作,比如釋放前面載入的貼圖等。只要在程序里提供了OnInitiate()/OnRelease()這兩個函數(shù),它們將會在適當?shù)臅r機由游戲框架自動調用,不用關心時序問題。

載入一個貼圖只需簡單的調用Texture_Load()函數(shù)并傳入文件名就可以了,如果有ColorKey也可在后面指定,我們這里用的貼圖已經(jīng)帶有Alpha通道了,所以直接載入就可以了,貼圖載入后可以被多個精靈或動畫復用。
   
m_aniTex = Texture_Load("ani.png");

精靈用于把一個貼圖畫到屏幕上,可以在創(chuàng)建精靈時就設置好將會把貼圖的哪一部分畫到屏幕上,也可以僅僅給它一個貼圖指針,在后面的程序里去改變它的貼圖區(qū)域,在這里我們采用創(chuàng)建的時候就設置的方法,“0, 0, 48, 96這一串數(shù)值告訴精靈要將貼圖上從(0, 0)開始,寬度為48高度為96的區(qū)域畫到屏幕上。
   
m_picSpr = Sprite_Create(m_aniTex, 0, 0, 48, 96);

動畫與精靈類似,只是多了幀數(shù)和fps的設置。這里第二個參數(shù)表示這個動畫共有4幀,第三個參數(shù)表示每秒播放4幀。后面四個參數(shù)設置了第一幀的貼圖范圍,后面幀的貼圖范圍將根據(jù)這個來計算,計算方法為:將前一幀貼圖范圍先向右移一個寬度,如果超出貼圖總寬度則下移一個高度并將橫坐標設為0,所以要做一個動畫用的貼圖只需將序列幀從左至右,從上至下排列就可以了。需要注意的是動畫創(chuàng)建好后是不會自動播放的,如果要讓動畫動起來必須手動調用動畫的Play()函數(shù),并在每幀刷新時調用動畫的Update()函數(shù)。
    m_upAni   = Animation_Create(m_aniTex, 4, 4, 48, 96, 0, 192);
    m_ upAni ->Play();
    m_upAni->Update(dt);

OnInitiate()函數(shù)里調用了一個SetCursor()函數(shù),這個函數(shù)用于設置游戲鼠標,接收的參數(shù)是一個精靈指針,這樣我們也可以把一個動畫的精靈指針傳進去,以實現(xiàn)動畫鼠標,有興趣可以刪掉“SetCursor(m_downAni->GetSprite())”前面的注釋符號看看效果:)

       OnRender()里的東西就沒啥好說的了,無非就是用各種方式把精靈和動畫畫到屏幕上,相關函數(shù)說明可以查看Galaxy2D游戲引擎的文檔。好了,這一節(jié)就先到這里,下回見:)



Feedback

# re: Galaxy2D游戲引擎教程3 - 精靈和動畫   回復  更多評論   

2011-09-01 19:59 by nana
謝謝您對字體問題的回答,這個例子中的光標設置好像在3.6版本也找不到了,也是被哪個類包含了嗎。

# re: Galaxy2D游戲引擎教程3 - 精靈和動畫   回復  更多評論   

2011-09-02 08:54 by 劍孤寒
這個功能被移除了,原因是在后來的使用過程中發(fā)現(xiàn)這個功能用處并不大,如果你需要這個功能,可以手動創(chuàng)建一個ggeSprit,在繪制函數(shù)的最后用Input_GetMousePosX()/Input_GetMousePosY()函數(shù)獲取鼠標當前坐標,然后調用ggeSprit的Render()函數(shù)畫上去就可以了。如果你有多個光標資源,不想人肉管理,也可以使用ggeResManager來管理,在ggeResManager釋放時,這些光標資源也會被自動釋放。

# re: Galaxy2D游戲引擎教程3 - 精靈和動畫   回復  更多評論   

2011-09-02 19:29 by nana
感謝回復,請問Galaxy現(xiàn)在支持flash嗎,祝Galaxy引擎越來越強大

# re: Galaxy2D游戲引擎教程3 - 精靈和動畫   回復  更多評論   

2011-09-03 15:01 by 劍孤寒
呵呵,謝謝,因為工作比較忙,業(yè)余時間比較少,所以Galaxy2D引擎更新會比較慢,以后會做到怎樣也不好說,但至少這個引擎我會一直做下去的,不會像其他很多免費引擎一樣,做著做著就沒人維護了。

Galaxy2D引擎現(xiàn)在還不支持Flash,之前有試過一下整合Flash進來,以替代現(xiàn)有的GUI系統(tǒng),但發(fā)現(xiàn)會有很多問題,最大的問題是幀率太低,因為除非引擎從底層支持Flash,否則要在引擎里使用Flash,唯一的辦法就是先把Flash畫到內存里,再從內存復制到紋理上,這個步驟是非常慢的,但是要從底層支持Flash,工作量非常大,我一個人業(yè)余時間弄,可能幾年都弄不完。

如果你非常需要這個功能,又不怕幀率低的話,可以到網(wǎng)上搜索HGE播放Flash的代碼,稍作修改就可以在Galaxy2D引擎里使用了。

# re: Galaxy2D游戲引擎教程3 - 精靈和動畫   回復  更多評論   

2011-09-04 19:37 by nana
感謝您的回復,通過使用這個引擎,也學會了不少東西,會一直支持引擎開發(fā)的。

# re: Galaxy2D游戲引擎教程3 - 精靈和動畫 [未登錄]  回復  更多評論   

2015-10-14 19:52 by shepherd
檢驗輸入語句:
if(Input_IsMouseUp(VK_LBUTTON))
看起來應該是檢驗鼠標左鍵抬起,實際上是鼠標右鍵抬起觸發(fā)。Input_IsMouseDown(VK_LBUTTON)我這邊也是右鍵。
請核實一下,謝謝!

# re: Galaxy2D游戲引擎教程3 - 精靈和動畫 [未登錄]  回復  更多評論   

2015-10-14 20:01 by shepherd
我用的是win7 64 + vc2010。
這個應該是winuser.h的問題,與g2d無關。不過總是很郁悶的,難道和XP不兼容嗎?
先百度去了

# re: Galaxy2D游戲引擎教程3 - 精靈和動畫   回復  更多評論   

2015-10-15 18:33 by 劍孤寒
@shepherd
你應該用 GGEK_LBUTTON 而不是 VK_LBUTTON

# re: Galaxy2D游戲引擎教程3 - 精靈和動畫 [未登錄]  回復  更多評論   

2015-10-16 20:00 by shepherd
感謝解答!代碼已修正!
現(xiàn)在是SAFE_RELEASE這個宏未找到定義。應該#include哪個文件?

# re: Galaxy2D游戲引擎教程3 - 精靈和動畫   回復  更多評論   

2015-10-17 18:05 by 劍孤寒
@shepherd
這個宏已改名成:GGE_RELEASE 了
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            伊人影院久久| 欧美精品在线免费| 亚洲国产日韩欧美综合久久| 亚洲欧美一区在线| 免费欧美高清视频| 久久av红桃一区二区小说| 国产精品日本一区二区| 亚洲天堂av综合网| 亚洲毛片在线看| 欧美日韩喷水| 亚洲欧美日韩在线一区| 亚洲图片欧美日产| 国产精品久久久久久妇女6080 | 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ入口 | 性伦欧美刺激片在线观看| 亚洲一区二区三区四区中文| 国产精品美女在线| 久久精品女人天堂| 性欧美video另类hd性玩具| 国产一区二区三区av电影| 久久久久久久久综合| 麻豆国产精品777777在线| 亚洲日本一区二区三区| 99精品视频免费| 国产精品亚洲аv天堂网| 一本一本久久| 在线观看日韩av电影| 久久成人人人人精品欧| 亚洲精品久久久蜜桃| 玖玖玖国产精品| 亚洲性视频h| 久久夜色撩人精品| 亚洲一二三区视频在线观看| 欧美日韩大片一区二区三区| 久久精品国产一区二区电影| 国产伦精品一区二区| 亚洲大胆av| 国产女主播视频一区二区| 欧美大胆成人| 国产精品video| 亚洲国产精品va在看黑人| 亚洲三级性片| 欧美日韩在线不卡| 亚洲免费视频中文字幕| 在线看片欧美| 性色av一区二区三区在线观看| 欧美一级免费视频| 激情另类综合| 亚洲伊人一本大道中文字幕| 久久精品一二三| 亚洲国产va精品久久久不卡综合| 亚洲视频一区| 亚洲精品影视在线观看| 久久精品国产2020观看福利| 久久综合色天天久久综合图片| 欧美日韩国产一区精品一区| 亚洲在线免费| 老司机午夜精品视频在线观看| 欧美日韩精品久久久| 欧美国产另类| 亚洲欧美国产77777| 国产精品国产三级国产普通话99| 亚洲免费一在线| 久久久欧美精品| 国产精品热久久久久夜色精品三区 | 模特精品在线| 国内精品久久久久久| 亚洲午夜在线观看| 蜜臀久久久99精品久久久久久| 99精品国产福利在线观看免费| 欧美一区二区高清| 欧美专区日韩专区| 国产精品一二三| 久久嫩草精品久久久精品| 99国产精品| 久久夜色精品国产欧美乱| 欧美三区不卡| 一区二区三区蜜桃网| 毛片精品免费在线观看| 亚洲男人影院| 亚洲日本中文字幕区| 国内精品视频在线播放| 欧美三级日韩三级国产三级| 久久综合久久综合久久| 亚洲男人av电影| 日韩视频在线你懂得| 亚洲一二三区在线| 亚洲高清免费| 国产欧美日韩精品在线| 欧美日韩一区二区视频在线观看| 久久九九免费视频| 欧美成人视屏| 久久久久国产精品麻豆ai换脸 | 激情综合色丁香一区二区| 欧美三级电影网| 欧美mv日韩mv国产网站| 91久久精品国产91久久性色| 一区二区三区久久| 国产精品久久精品日日| 欧美黄色一区| 欧美成人精品福利| 亚洲视频导航| 亚洲美女av电影| 亚洲国产成人av好男人在线观看| 一区二区三区高清| 亚洲精品中文字| 亚洲精品国久久99热| 亚洲人体影院| 国产精品天天看| 国产精品久久999| 欧美午夜精品理论片a级按摩| 欧美日韩国产不卡| 欧美日韩精选| 欧美日韩在线一二三| 欧美日韩中文字幕在线视频| 欧美日韩国产影片| 欧美视频在线观看免费网址| 欧美日韩精品是欧美日韩精品| 欧美精品一区二区视频| 农村妇女精品| 欧美屁股在线| 国产精品v片在线观看不卡| 欧美日韩直播| 国产精品三上| 国产亚洲欧美激情| 国产一区二区三区视频在线观看| 国产婷婷一区二区| 牛人盗摄一区二区三区视频| 欧美国产三级| 欧美日一区二区三区在线观看国产免| 欧美三级午夜理伦三级中视频| 国产精品热久久久久夜色精品三区 | 麻豆91精品| 欧美激情一区二区三区蜜桃视频| 欧美一区国产一区| 日韩午夜在线观看视频| 亚洲影院一区| 一区二区免费看| 午夜日本精品| 欧美成人精品在线观看| 亚洲人在线视频| 久久一区免费| 亚洲国产乱码最新视频| 亚洲午夜精品网| 久久精品99国产精品酒店日本| 免费成人你懂的| 欧美日本一区| 国产精一区二区三区| 亚洲第一网站| 亚洲午夜精品久久久久久app| 午夜欧美电影在线观看| 欧美 日韩 国产 一区| 日韩一区二区电影网| 欧美呦呦网站| 欧美精品日本| 欧美激情久久久久| 国产日产欧美a一级在线| 亚洲伦理在线观看| 久久九九全国免费精品观看| 亚洲美女黄色片| 久久精品国产99国产精品澳门| 欧美日韩在线播放三区| 好看不卡的中文字幕| 国产一区二区丝袜高跟鞋图片| 亚洲每日更新| 欧美91视频| 午夜精品视频一区| 欧美视频一区在线| 亚洲国产一区二区精品专区| 亚洲黄一区二区三区| 久久精品91久久久久久再现| 日韩一级精品| 免费成人美女女| 激情久久综合| 久久精品一区二区三区四区| 亚洲天堂成人在线观看| 欧美区高清在线| 亚洲国产成人porn| 久久艳片www.17c.com| 亚洲欧美电影在线观看| 国产精品电影网站| 中文精品视频| 日韩一级黄色大片| 欧美日韩国产成人| 一本色道久久综合亚洲精品高清| 亚洲欧美中文日韩在线| 99精品视频免费| 欧美日韩成人综合| aaa亚洲精品一二三区| 亚洲国产一区二区视频 | 欧美亚洲在线| 国产伦精品一区二区| 欧美一二三视频| 亚洲欧美日韩精品一区二区| 美女啪啪无遮挡免费久久网站| 在线观看国产欧美| 免费成人黄色片| 久久一综合视频| 亚洲第一精品夜夜躁人人爽| 免费亚洲一区|