`
win_co
  • 浏览: 10412 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

游戏开发之--真枪实战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  [复制]
分享到:
评论

相关推荐

    intel-graphics-update-tool_2.0.2.zip

    标题中的“intel-graphics-update-tool_2.0.2.zip”指的是Intel图形更新工具的2.0.2版本的压缩包文件。这个工具是专为Linux用户设计的,旨在简化Intel显卡驱动程序的更新过程。它允许用户自动检查并安装最新的驱动...

    xmlgraphics-commons-2.1-API文档-中文版.zip

    赠送jar包:xmlgraphics-commons-2.1.jar; 赠送原API文档:xmlgraphics-commons-2.1-javadoc.jar; 赠送源代码:xmlgraphics-commons-2.1-sources.jar; 赠送Maven依赖信息文件:xmlgraphics-commons-2.1.pom; ...

    xmlgraphics-commons-2.1-API文档-中英对照版.zip

    赠送jar包:xmlgraphics-commons-2.1.jar; 赠送原API文档:xmlgraphics-commons-2.1-javadoc.jar; 赠送源代码:xmlgraphics-commons-2.1-sources.jar; 赠送Maven依赖信息文件:xmlgraphics-commons-2.1.pom; ...

    intel-linux-graphics-installer_1.1.0-0intel1_i386.deb

    intel-linux-graphics-installer_1.1.0-0intel1_i386.deb

    xmlgraphics-commons-2.6.jar

    xmlgraphics-commons-2.6.jar

    graphics-go code.google.com.zip

    【图形编程与Go语言结合:深入理解“graphics-go”库】 在编程领域,图形处理是一项重要的技术,尤其在游戏开发、数据可视化、UI设计等方面。Go语言,由于其高效的性能和简洁的语法,逐渐成为开发者的热门选择。...

    Intel-UHD-Graphics-630-Driver_Win7x64_21.20.16.4839.rar

    标题中的“Intel-UHD-Graphics-630-Driver_Win7x64_21.20.16.4839.rar”表明这是一个针对Intel UHD Graphics 630显卡的驱动程序,适用于Windows 7 64位操作系统。版本号21.20.16.4839显示这是驱动的一个特定更新,...

    JAVA游戏编程之二----j2me MIDlet 手机游戏入门开发--贪吃蛇_1_工程代码

    总的来说,通过学习这个"JAVA游戏编程之二----j2me MIDlet 手机游戏入门开发--贪吃蛇"项目,你可以掌握到J2ME基础,包括MIDlet的生命周期管理、图形绘制、事件处理、动画制作以及简单的游戏逻辑。这个过程不仅可以...

    plymouth-graphics-libs-0.9.4-10.20200615git1e36e30.el8.i686.rpm

    官方离线安装包,亲测可用

    canvas-basic-graphics.zip

    canvas绘制基础图形(canvas 气泡框 网格线 三角形 圆角矩形 箭头)1.初始化画布 initCanvas * 2.绘制网格线 drawGridlines * 3.绘制圆点 drawDot * 4.绘制圆环 drawRing

    PC设计软件:Mentor Graphics PADS二次开发-PADS API接口详解与使用方法

    PC设计软件:Mentor Graphics PADS二次开发_PADS二次开发案例分析与实战.docx PC设计软件:Mentor Graphics PADS二次开发_PADS开发中的常见问题与解决方案.docx PC设计软件:Mentor Graphics PADS二次开发_PADS开发...

    xmlgraphics-commons-1.5.jar

    xmlgraphics-commons-1.5.jar

    Ubuntu 出现 The system is running in low-graphics mode 的解决办法.docx

    在Ubuntu系统中,当用户遇到"The system is running in low-graphics mode"的错误提示时,意味着系统无法正确加载图形界面,通常与显卡驱动程序有关。这个问题可能是由于多种原因引起的,比如驱动程序损坏、更新失败...

    degrees-of-lewdity-graphics-mod-master.zip

    很抱歉,但根据您给出的信息,"degrees-of-lewdity-graphics-mod-master.zip"似乎与IT行业的专业知识点关联性不强。通常,这样的文件名可能指的是游戏模组或图形修改资源,这更多属于游戏开发或者娱乐领域,而非传统...

    iPhone开发--游戏手柄

    在iOS平台上,开发一款游戏时,为用户提供一个良好的游戏体验是非常关键的。"iPhone开发--游戏手柄"这个主题主要关注如何在iPhone游戏中实现类似传统游戏机手柄的功能,让玩家能够通过触摸屏幕来控制游戏人物或物体...

    practical-wpf-charts-graphics-master.rar

    该资源"practical-wpf-charts-graphics-master.rar"包含了这本书的源代码,为读者提供了丰富的实践案例和深入理解WPF图表及图形编程的宝贵材料。 WPF(Windows Presentation Foundation)是.NET Framework的一部分...

    graphics32-1-9-0

    本文将深入探讨Graphics32-1-9-0的特性、使用方法以及在实际开发中的应用。 首先,Graphics32是一个开源项目,这意味着开发人员可以自由地查看、修改和分发源代码,这不仅增加了透明度,也鼓励了社区的参与和持续...

    pubg-graphics-unlocker-源码.rar

    总的来说,"pubg-graphics-unlocker"的源码为我们揭示了游戏优化工具的底层工作原理,涉及到的编程技术包括内存操作、进程注入、API钩子等,对于学习游戏开发、逆向工程和系统编程的学生或爱好者来说,这是一个宝贵...

    texlive-graphics-cfg-20180414-23.el8.noarch(1).rpm

    官方离线安装包,亲测可用

Global site tag (gtag.js) - Google Analytics