首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络游戏 >

游戏开发之-真枪实战9-graphics抽取

2012-08-22 
游戏开发之--真枪实战9--graphics抽取??.graphics抽取通过前的介绍应该对游戏的总体结构有所了解了。这里再

游戏开发之--真枪实战9--graphics抽取

?

?

.graphics抽取

通过前的介绍应该对游戏的总体结构有所了解了。这里再多说点:
就是绘制的时候需要Canvas 和Paint。这样传递函数不方便也是的绘制的方式复杂化。不利于为何和使用引擎。
这个时候我们可以将绘制的具体操作抽象出来。用一个单独的对象来管理。如下:

复制代码import android.content.Context;

import android.graphics.Bitmap;

import android.graphics.Canvas;

import android.graphics.Paint;

import android.graphics.Rect;

import android.graphics.RectF;

import android.graphics.drawable.BitmapDrawable;

?

public class GameGraphics {

?

//使用单件

private final static GameGraphics instance = new GameGraphics();

private GameGraphics(){}

private Canvas m_canvas = null;//画布

private Paint m_paint = null;//画笔

private Context m_context = null;//context对象

public static GameGraphics Instance()

{

return instance;

}

public void setContext(Context context)

{

m_context = context;

}

//初始化

public void init(Canvas canvas,Paint paint)

{

m_canvas = canvas;

m_paint = paint;

}

public Bitmap getBitmap(int resid)

{

return ((BitmapDrawable)m_context.getResources().getDrawable(resid)).getBitmap();

}

//绘制字符串。这个时候不不再需要canvas了。因为游戏一般只会有一个canvas就够了

//m_canvas就是当先画布的引用

public void draw(String text,int x,int y,Paint paint)

{

m_canvas.drawText(text,x,y,paint);

}

?

public void draw(String text,int x,int y)

{

m_canvas.drawText(text,x,y,m_paint);

}

public void draw(Rect rect,int color)

{

int colortmp = m_paint.getColor();

m_paint.setColor(color);

m_canvas.drawRect(rect, m_paint);

m_paint.setColor(colortmp);

}

public void draw(RectF rect,int color)

{

int colortmp = m_paint.getColor();

m_paint.setColor(color);

m_canvas.drawRect(rect, m_paint);

m_paint.setColor(colortmp);

}

public void draw(Bitmap bitmap,int x,int y)

{

m_canvas.drawBitmap(bitmap, x, y, m_paint);

}

public void draw(Bitmap bitmap,Rect src,Rect dst)

{

m_canvas.drawBitmap(bitmap, src, dst, m_paint);

}

public void draw(Bitmap bitmap,Rect src,RectF dst)

{

m_canvas.drawBitmap(bitmap, src, dst, m_paint);

}

}
复制代码
这个时候可以将tile和menubutton的操作代替了。
这个就是有个体会。就是向GameGraphics发送挥着命令就行了。具体游戏逻辑处理需要代码。
这个GameGraphics就可以做绘制部分的引擎初步。是结构的初步。就是把某些系统相关的实用一个类型进行隔离开,。
这样无论我们实用什么引擎只要实现一线GameGraphics的几个绘制函数就可以直接实用了。甚至能很快的换成opgl es的方式。因为游戏只向GameGraphics发送请求,
嘿嘿。就先到这里吧。
希望浅薄的分析对大家有点用。对游戏有个大概的认识。欢迎回帖交流。低于50字的免回。谢谢

?原文地址:http://www.cmd100.com/bbs/thread-7027-1-3.html

另外附上邀请码

http://www.cmd100.com/bbs/home.php?mod=invite&id=298&c=ylxe1m ?[复制] ylxe1m ?[复制] http://www.cmd100.com/bbs/home.php?mod=invite&id=297&c=yu411u ?[复制] yu411u ?[复制] http://www.cmd100.com/bbs/home.php?mod=invite&id=296&c=mol06n ?[复制] mol06n ?[复制] http://www.cmd100.com/bbs/home.php?mod=invite&id=295&c=0aiiie ?[复制] 0aiiie ?[复制] http://www.cmd100.com/bbs/home.php?mod=invite&id=294&c=1tyqsj ?[复制] 1tyqsj ?[复制] http://www.cmd100.com/bbs/home.php?mod=invite&id=49&c=ddvesp ?[复制] ddvesp ?[复制] http://www.cmd100.com/bbs/home.php?mod=invite&id=48&c=hwom35 ?[复制] hwom35 ?[复制] http://www.cmd100.com/bbs/home.php?mod=invite&id=47&c=r9111t ?[复制] r9111t ?[复制] http://www.cmd100.com/bbs/home.php?mod=invite&id=46&c=haddzg ?[复制] haddzg ?[复制] http://www.cmd100.com/bbs/home.php?mod=invite&id=45&c=9du4y6 ?[复制] 9du4y6 ?[复制]

热点排行