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