bada 2D遊戲編程之一——圖形繪製

bada 2D遊戲編程之一——圖形繪製 html

 

2D遊戲中,用戶見到的畫面一般是經過兩種方式實現的,一種是圖形繪製,就是在屏幕上繪製各類幾何圖元,如線條和矩形等;還有一種是圖像繪製,也就是常說的貼圖,遊戲中的不少畫面都是一張張的圖片貼上去的。 編程

 

其實在智能機時代,徹底採用圖形繪製的遊戲已經很難吸引玩家的眼球了,圖形繪製在遊戲中更多的是扮演一個輔助的角色,下面給你們舉兩個經常使用的例子。 api

1,畫線類遊戲。這類遊戲中有的會經過繪製線條來控制精靈的運動軌跡。 ide

2,繪製精靈對應的幾何體。在碰撞檢測中,都會根據遊戲精的形狀將其分解成對應的幾何體,如分解成矩形或者圓形等,而在遊戲的調試階段會對這些幾何體進行繪製並顯示出來,這樣能夠便於觀察精靈的運行是否與物理世界規律相吻合。(這部分可能讀起來有點費勁,等你們看到後面的物理引擎部分就明白了) 函數

 

接下來主要給你們介紹一下繪製相關的類和對應的API,這些類都包含在Osp::Graphics命名空間當中。同時爲了方便理解,我給這些類都統稱爲「繪製上下文」,並根據我的的理解按照「繪製的工具」、「繪製的樣式」和「繪製的內容」對它們進行了分類。下面對這些類進行簡單的說明。 工具

 

1.      繪製的內容 字體

「繪製的內容」是指那些實實在在被繪製出來的,並顯示在屏幕上的實體。如點、圖片、矩形、文本等。 spa

3d

做用 調試

Bitmap

表示圖片內容

Dimension

表示一個不帶有座標位置的矩形區域

EnrichedText

表示文本內容

Point

表示一個座標點

Rectangle

表示一個帶有座標位置的矩形區域

2.      繪製的樣式

「繪製的樣式」就是對繪製的內容進行修飾和美化。如繪製的顏色和樣式等。

做用

Font

表示字體,包括字體的樣式等屬性

Color

表示ARGB (Alpha, Red, Green, Blue)顏色模式

3.      繪製的工具

我對「繪製的工具」的理解是指可以經過這些類(工具類)進行繪製,它們都包含有各類繪製(Draw)函數,根據指定的繪製的內容和繪製的樣式直接調用這些Draw函數進行繪製就能夠了,不須要關心是如何繪製出各類圖形圖像的。

 

3.1  Canvas

Canvas的英文意思是畫布,在bada平臺上它起到的做用也是和畫布很是相似的,由於它表示的是顯示設備上的一塊矩形的區域,在這塊區域上能夠進行各類繪製(圖形,圖像和文本),很是像繪畫時用到的畫布,並且它還提供了各類繪製函數。

函數

功能描述

SetFont(const Font &font)

設置字體

SetForegroundColor(const Color &color)

設置顏色

SetLineWidth(int width)

設置線條粗細

DrawBitmap(const Point &point, const Bitmap &bitmap)

繪製位圖

DrawEllipse(const Rectangle &rect)

繪製橢圓

DrawLine(const Point &point1, const Point &point2)

繪製直線

DrawRectangle (const Rectangle &rect)

繪製矩形

DrawText(const Point &point, const EnrichedText &enrichedText)

繪製文本

DrawTriangle(const Point &point1, const Point &point2, const Point &point3)

繪製三角形

詳細的說明你們能夠去參考一下幫助文檔。

 

3.2  BufferInfo

BufferInfo能夠理解成它表示的是Canvasbada系統中的內存,經過它的能夠直接操做Canvas的內存。這樣咱們就能夠經過改變內存數據來改變Canvas要顯示的內容。很明顯這樣操做起來會很是的不方便,即便是畫一條直線的也得通過大量的運算,寫出大量的代碼。

這個類在2D遊戲開發中基本不會用到,因此就不進行深刻的介紹的。

你們能夠參考《經過Canvas進行直接像素訪問》這篇文章:

http://developer.bada.com/article/Direct-pixel-accessing-with-graphic-Canvas

 

最後給你們展現一下如何進行圖形繪製。使用bada SDK提供的API進行圖形繪製的主要步驟以下:

(1)   建立一個基於Form的應用程序

(2)   重寫Form對象的OnDraw()方法

(3)   OnDraw()方法中添加繪製圖形的代碼

 

result MainForm::OnDraw(void)

{

    result r = E_SUCCESS;

 

    //獲取繪製的工具Canvas

    Canvas* pCanvas = GetCanvasN();

    if(pCanvas){

       //設置繪製的樣式

       Font font;

       font.Construct(FONT_STYLE_PLAIN,32);

       pCanvas->SetFont(font);

       pCanvas->SetForegroundColor(Color::COLOR_BLACK);

 

       //根據繪製的內容進行繪製

       pCanvas->DrawText(Point(10,10),"This is the draw text test");

       pCanvas->DrawEllipse(Rectangle(10, 100, 460, 100));

       pCanvas->DrawLine(Point(10, 250), Point(470, 250));

       pCanvas->DrawRectangle(Rectangle(10, 300, 460, 100));

       pCanvas->DrawTriangle(Point(10,750),Point(240,450),Point(470,750));

       delete pCanvas;

    }

    return r;

}

 

繪製的效果圖:

相關文章
相關標籤/搜索