閱讀700 返回首頁    go 阿裏雲 go 技術社區[雲棲]


hgeSprite類

hgeSprite類

 

hgeSprite是一個精靈實體的HGE幫助類。

1、構造函數

創建和初始化一個hgeSprite對象。

hgeSprite(HTEXTURE tex, float x, float y, float w, float h);

其中:tex為紋理圖片,x與y為精靈對應紋理圖片的左上角位置,w與h為精靈的寬度與高度。

2、渲染函數

1)       Render 將精靈渲染到屏幕上

void Render(float x, float y);

其中:x與y為顯示精靈的屏幕位置

2)       RenderEx 可使用縮放和旋轉的方式來渲染精靈

void RenderEx(float x, float y, float rot, float hscale=1.0f, float vscale=0.0f);

其中:x與y為顯示精靈的屏幕位置,rot為旋轉角度,hscale和vscale精靈的寬度與高度的放縮比例

3)       RenderStretch 渲染拉伸的精靈

void RenderStretch(float x1, float y1, float x2, float y2);

其中:x1與y1為左上角,x2與y2為右上角,即將精靈以拉伸的方式顯示在固定有四方形中。

4)       Render4V 將精靈渲染到屏幕上的任意矩形中

void Render4V(float x0, float y0, float x1, float y1, float x2, float y2, float x3, float y3);

其中: (x0,y0)---------(x1,y1)

          |               |

       (x3,y3)---------(x2,y2)

3、相關的輔助函數

SetTexture      設置精靈要使用的紋理。

SetTextureRect 設置精靈要使用的紋理區域。

SetColor        為指定的頂點或整個精靈設置色彩和透明度。

SetZ            為指定的頂點或整個精靈設置Z序(Z-order)。

SetBlendMode    設置精靈的混合模式。

SetHotSpot      設置精靈的錨點,即精靈的中心點位置。

SetFlip         設置水平和/或垂直翻轉精靈。

   

GetTexture      返回當前精靈的紋理。

GetTextureRect 返回精靈使用的當前紋理區域。

GetColor        返回指定的精靈頂點顏色。

GetZ            返回指定的精靈頂點Z序(Z-order)。

GetBlendMode    返回當前精靈的混合模式 。

GetHotSpot      返回精靈的錨點。

GetFlip         返回當前精靈的水平和/或垂直翻轉。

GetWidth        返回精靈的寬度。

GetHeight       返回精靈的高度。

GetBoundingBox 返回精靈的約束邊界(四邊形)。

GetBoundingBoxEx 返回縮放和旋轉的精靈約束邊界(四邊形)。

4、幾點注意事項

1> hgeSprite中的SetHotSpot的功用是設定該sprite的熱點(錨點)。其接受的參數a,b代表改熱點據sprite坐上角的相對橫,縱

距離。設置熱點是初始化一個sprite過程中的一部分。之後再對該sprite進行處理時其坐標就是其熱點坐標。

例如:

hgeSprite* spr = new hgeSprite(0, 0, 0, 20, 20)   //20x20

spr.SetHotSpot(10, 10);   //Hot spot (10, 10) in center


2>HGE中sprite的淡入淡出效果可以通過SetColor不斷更改sprite的顏色值來做到。對於一個帶有自定義的texture的sprite,將

其顏色設置為0xFFFFFFF,在一般的BlendMode設定下為最標準的值。如果更改為0x88FFFFFF,則正好是半透明狀態。以此類推

0x00FFFFFF時則為完全透明。

下麵給出一個簡單的漸變色的類的例子。

一個簡單的辦法是設置一個int的factor,將其乘以0x1000000對顏色,進行加減來控製其alpha值。 但要注意的是HGE中顏色值的

類型是typedef unsigned long DWORD,是非符號數。

如果用下麵這種方式進行操作必然導致錯誤。

colorword -= factor*0x1000000;

if (colorword < 0x00FFFFFF) {

colorword = 0x00FFFFFF;

return false;  //fade finished

}

return true;    //fading

由於colorword是非符號數,if判斷支內語句永遠無法執行可以改為下麵的方法

DWORD delta = factor*0x1000000;

if (colorword < delta) {

colorword = 0x00FFFFFF;

return false;

} else {

colorword -= delta;

return true;

}

最後更新:2017-04-02 06:51:29

  上一篇:go HGE 係列教材(9) --- GUI(本文未完成)
  下一篇:go magento -- 修正又一個翻譯上的bug,同時了解了下Magento解析xml的方式