BREW ISprite介面學習筆記2

2021-05-22 10:08:31 字數 2207 閱讀 2181

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類,兩者從理論上可以做一般性的混用,但是在實際應用中,他們還是有一定區別的。抽象類一般作為公共的父類為子類的擴充套件提供基礎,這裡的擴充套件包括了屬性上和行為上的。而介面一般來...