2010-04-30
乙個tile map可以看做多個位圖(tiles)組成的二維矩陣。所有的點陣圖都具有相同的大小,並且相互之間無縫連線。
乙個tile map可以表示成乙個索引陣列。元素在陣列中的位置決定了該tile要在**繪製,而該元素儲存的索引值則
決定了哪乙個tile將被繪製。
不僅陣列中的每個tile元素可以關聯附加屬性,比如透明度和簡單的變換方式,而且,整個tile map也可以設定不同
的屬性,比如繪製的偏移量,tile的大小,和是否自動滾動等。
tile map主要在遊戲中繪製遊戲背景。
主要涉及函式:
1)isprite_settilebuffer()
2)isprite_drawtiles()
3)isprite_settransformtable()
isprite_settilebuffer
()函式原型:
int isprite_settilebuffer(isprite *po, uint8 untilesize, ibitmap *pbmtilebuffer);
函式用於告知sprite引擎到**(pbmtilebuffer)查詢特定大小的tile影象。sprite引擎為不同大小的tile維護
乙個單獨的緩衝區。tile在該影象緩衝區中以單列的形式進行排列,如同sprite一樣。同樣的,tile索引的作用與
sprite索引的作用一樣,都用於定位不同的tile。
引數說明:
1)po:isprite介面物件。
2)untilesize:tile影象的大小(單個),與sprite解釋相同。
3)pbmtilebuffer:用於關聯到isprite介面的影象源。與sprite解釋相同。當設定為null時,將強制釋放
關聯的影象源。
isprite_drawtiles
()函式原型:
int isprite_drawtiles(isprite *po, aeetilemap *pmaps);
函式用於將pmaps陣列中的tile maps繪製到指定緩衝區。陣列中的每個元素都描述了乙個tile map物件。
sprite引擎會遍歷該陣列一次。
pmaps中必須有乙個元素的pmaparray欄位設為null,表示該陣列結束。
引數說明:
1)po:isprite介面物件。
2)pmaps:aeetilemap結構的陣列。
typedef struct aeetilemap;
引數說明:
1)pmaparray:tile影象索引和屬性的陣列。它是二維tile矩陣的一維表示。陣列中的每個元素
包含了相應tile的索引和屬性。
每個元素的低10位表示tile在影象源中的索引:
tile_index_mask和tile_index_nothing(0x03ff)
都表示不在該位置上繪製tile
高6為表示該tile的變換屬性:
tile_flip_x、tile_flip_y、(橫向、豎向變換)
tile_rotate_90、tile_rotate_180、tile_rotate_270(逆向旋轉)
tile_transparent
每個元素的pmaparray都是以上乙個或幾個屬性的組合。
當pmaparray設為null時,表示陣列結束,該結構的其他字段此時無效。
2)unflags:整個tile map的屬性,目前只有map_flag_wrap屬性有效,表示可以連續顯示。
3)reserved:預留屬性,必須設為0。
4)x,y:要繪製到螢幕上的整個tile map的左上角座標,相對於螢幕左上角座標(0,0)的偏移量。
注意,地圖的大小一般比螢幕的要大(減少地圖重繪次數),所以y有可能為負值,
表示超出螢幕大小的位置。這一點與sprite有所區別。
位圖:5)w,h:整個tile map的大小,定義tile的個數,相當於tile矩陣的列數和行數。
使用map_size_*表示。 *為2n
6)untilesize:每個tile的大小,表示為tile_size_*。
7)reserved2:預留位,必須設定為0。
isprite_settransformtable()
函式原型:
int isprite_settransformtable(isprite *po, aeetransformmatrix *ptransformtable);
學習繼承 介面
1 繼承 父類 author administrator public class fulei private int i 1 protected double d 12 public float f 1.1f private void syjs protected void mfjs public...
JAVA學習 介面
通過一天的學習,做乙個對於介面的簡單總結。介面,這裡所提到的介面實際上是一種規範,也可理解為準則,基本要求。首先,介面是一種特殊的抽象類,裡面只包含基本屬性引數,抽象方法,內部類和列舉類。並不包含具體的實現過程。它需要其他想要使用該介面的類,根據自己的實際情況對介面內的方法等進行詳細說明。在介面中,...
java學習 介面
介面和抽象類的區別 動物類要有呼吸方法。怎麼呼吸就是子類的事了。現在有很多討論和建議提倡用inte ce代替abstract類,兩者從理論上可以做一般性的混用,但是在實際應用中,他們還是有一定區別的。抽象類一般作為公共的父類為子類的擴充套件提供基礎,這裡的擴充套件包括了屬性上和行為上的。而介面一般來...