bada 2D游戏编程之二――图像绘制(2)

 

 

bada 2D游戏编程之二——图像绘制

 

由于篇幅限制,所以拆成了两篇。

 

3,  创建区域图片

这种方式是先调用Bitmapresult Construct(const Bitmap& bitmap, const Osp::Graphics::Rectangle& rect)将图片中的部分区域创建成一张独立的Bitmap,然后再进行“整图绘制”。

同“区域绘制”类似,它也是采用精灵表,但是与直接绘制精灵表中的精灵不一样,它是先根据精灵列表中的精灵所在区域创建精灵图片,然后再绘制精灵图片。

 

 

下面的代码就是如何绘制出上面的三张精灵图片:

(1)    精灵表和精灵图片声明

   Osp::Graphics::Bitmap* __robotBmp;

   Osp::Graphics::Bitmap* __robot1Bmp;

   Osp::Graphics::Bitmap* __robot2Bmp;

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. 需要为精灵表中的图片分配内存,增加了程序的内存使用量

 

你可能感兴趣的:(ios,android,game,phone,2d,Bada,SMART)