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;

}

 

绘制的效果图:

相关文章
相关标签/搜索