bada 2D遊戲編程之二——圖像繪製(2)

 

 

bada 2D遊戲編程之二——圖像繪製 編程

 

因爲篇幅限制,因此拆成了兩篇。 ide

 

3,  建立區域圖片 spa

這種方式是先調用Bitmapresult Construct(const Bitmap& bitmap, const Osp::Graphics::Rectangle& rect)將圖片中的部分區域建立成一張獨立的Bitmap,而後再進行「整圖繪製」。 orm

同「區域繪製」相似,它也是採用精靈表,可是與直接繪製精靈表中的精靈不同,它是先根據精靈列表中的精靈所在區域建立精靈圖片,而後再繪製精靈圖片。 blog

 

 

下面的代碼就是如何繪製出上面的三張精靈圖片: 遊戲

(1)    精靈表和精靈圖片聲明 圖片

   Osp::Graphics::Bitmap* __robotBmp; 內存

   Osp::Graphics::Bitmap* __robot1Bmp; ci

   Osp::Graphics::Bitmap* __robot2Bmp; get

Osp::Graphics::Bitmap* __robot3Bmp;

(2)    加載精靈表圖片,並根據精靈表中精靈的位置建立精靈圖片

__robotBmp = AppResource::GetInstance()->GetBitmapN("robot.PNG");

int spriteWidth = 100;

int spriteHeight = 115;

__robot1Bmp = new Bitmap();

__robot1Bmp->Construct(*__robotBmp,Rectangle(0*spriteWidth,0*spriteHeight,spriteWidth,spriteHeight));

 

__robot2Bmp = new Bitmap();

__robot2Bmp->Construct(*__robotBmp,Rectangle(1*spriteWidth,0*spriteHeight,spriteWidth,spriteHeight));

 

__robot3Bmp = new Bitmap();

__robot3Bmp->Construct(*__robotBmp,Rectangle(2*spriteWidth,0*spriteHeight,spriteWidth,spriteHeight));

 

(3)    繪製精靈圖片

Canvas* pCanvas = GetCanvasN();

if(pCanvas){

pCanvas->DrawBitmap(Point(100,100), *__robot1Bmp);

pCanvas->DrawBitmap(Point(100,300), *__robot2Bmp);

pCanvas->DrawBitmap(Point(100,500), *__robot3Bmp);

 

delete pCanvas;

}

 

總結:

上面的3個例子獲得的結果都是同樣的,能夠說是異曲同工。下圖是最終的效果圖:

 

這三種方式各有各的優缺點,你們都須要結合遊戲的實際狀況進行綜合應用。

繪製方式

優勢

缺點

整圖繪製

繪圖效率高

每一個精靈都用一張單獨的圖片,會形成圖片太多不便於管理

區域繪製

採用精靈表能夠減小圖片數量,便於管理圖片

1. 繪圖效率低

2. 須要計算圖片在精靈表中的位置

建立區域圖片

1. 繪圖效率高

2. 採用精靈表能夠減小圖片數量,便於管理圖片

1. 須要計算圖片在精靈表中的位置

2. 須要爲精靈表中的圖片分配內存,增長了程序的內存使用量

相關文章
相關標籤/搜索