如何使用libgdx 进度条编写一个简单的游戏

您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
基于Libgdx的Android关卡类游戏设计与实现.pdf75页
本文档一共被下载:
次 ,您可免费全文在线阅读后下载本文档
文档加载中...广告还剩秒
需要金币:250 &&
优秀硕士学位论文,完美PDF格式,支持自由编辑复制。
你可能关注的文档:
··········
··········
学校代码1 0 4 8 7
硕士学位论文
基于Libgdx 的Android 关卡类
游戏设计与实现
学位申请人:蒋政华
学科专业:计算机技术
指导教师:谭志虎 副教授
答辩日期:
A Thesis Submitted in Partial Fulfillment of the Requirements
for the Degree for the Master of Engineering
Design and Implementation of Android Level Games
Based on Libgdx
: Jiang Zhenghua
: Computer Technology
Supervisor
: Assoc. Prof. Tan Zhihu
Huazhong University of Science & Technology
Wuhan, Hubei 430074, P.R.China
独创性声明
本人声明所呈交的学位论文是我个人在导师指导下进行的研究工作及取得的
研究成果。尽我所知,除文中已经标明引用的内容外,本论文不包含任何其他个
人或集体已经发表或撰写过的研究成果。对本文的研究做出贡献的个人和集体,
均已在文中以明确方式标明。本人完全意识到本声明的法律结果由本人承担。
学位论文作者签名:
学位论文版权使用授权书
本学位论文作者完全了解学校有关保留、使用学位论文的规定,即:学校有权保
留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本
正在加载中,请稍后...您所在的位置: &
Android游戏引擎libgdx使用教程1:搭建libgdx环境
Android游戏引擎libgdx使用教程1:搭建libgdx环境
libgdx是一个跨平台的2D/3D的游戏开发框架,它基于Apache License, Version 2.0协议,由Java/C/C++语言编写而成,其代码托管于Google Code中,对商业使用和非商业使用均免费。
libgdx是一个跨平台的2D/3D的游戏开发框架,它基于Apache License, Version 2.0协议,由Java/C/C++语言编写而成,其代码托管于Google Code中,对商业使用和非商业使用均免费。
开源的游戏框架并不少见,但是libgdx的优势是相当明显的,主要是体现在以下几个方面:
1、极强的兼容性
libgdx兼容大多数微机平台(标准JavaSE实现,能运行在Mac、Linux、Windows等系统)与Android平台(Android1.5以上即可使用,Android2.1以上可满功率发挥)。
Libgdx主要是用Java写的,其中也参杂了一些C/C++代码,这些代码是为了处理一些对性能要求很高的操作,比如物理引擎或者音频处理。作为用 户,你只需要关注Java端就可以了,它已经把所有的本地代码封装好了。相比于其他android游戏引擎,libgdx的效率优势十分明显。
另外,libgdx还具备架构清晰,物理引擎(Box2D)的封装,拥有丰富的工具等特点。
libgdx的logo:
498)this.width=498;' onmousewheel = 'javascript:return big(this)' alt="libgdx logo" src="/wyfs01/M02/37/5F/wKioJlKe4qDyoQE2AAAG2X-36cA992.jpg" />
libgdx的下载地址:。
首先下载最新的jar,我下载的是libgdx-0.9.2。
498)this.width=498;' onmousewheel = 'javascript:return big(this)' width="423" height="323" alt="libgdx下载" src="/wyfs01/M02/37/5F/wKioJlKe4qHieA6FAABypR3o_8I658.jpg" />
新建一个Android项目,File -& New -& Project -& Android Project。我选的SDK是1.6的,最低选择应该是1.5。
新建一个文件夹libs(这个名字是固定的,不能随意改),将下载到的jar复制进去,android平台只需要复制gdx.jar和gdx-backend-android.jar。
增加引用,然后将armeabi和armeabi-v7a两个文件夹复制到libs文件夹中。
498)this.width=498;' onmousewheel = 'javascript:return big(this)' alt="Android游戏引擎libgdx使用教程1:搭建libgdx环境" src="/wyfs01/M02/37/60/wKioOVKe4qHQdjZuAAA_-rv_CvA718.jpg" />
然后写个小程序测试一下环境有没有问题。
新建类HelloGameActivity,继承AndroidApplication类。
package&blogs.&&&&&import&com.badlogic.gdx.backends.android.AndroidA&&&&&import&android.os.B&&&&&public&class&HelloGameActivity&extends&AndroidApplication&{&&&&&@Override&&&&&public&void&onCreate(Bundle&savedInstanceState)&{&&&&&super.onCreate(savedInstanceState);&&&&&initialize(new&FirstGame(),&false);&&&&&}&&&&&}&&&
initialize(new FirstGame(), false);就是启动游戏的关键,FirstGame是一个实现了ApplicationListener的类。代码如下:
package&blogs.&&&&&import&com.badlogic.gdx.ApplicationL&&&&&import&com.badlogic.gdx.G&&&&&import&com.badlogic.gdx.graphics.GL10;&&&&&import&com.badlogic.gdx.graphics.g2d.SpriteB&&&&&public&class&FirstGame&implements&ApplicationListener&{&&&&&&private&SpriteBatch&&&&&&@Override&&&&&public&void&create()&{&&&&&batch&=&new&SpriteBatch();&&}&&&&&@Override&&&&&public&void&dispose()&{&&&&&&}&&&&&@Override&&&&&public&void&pause()&{&&&&&&}&&&&&@Override&&&&&public&void&render()&{&&&&&Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);&&batch.begin();&&&&&batch.end();&&&&&}&&&&&@Override&&&&&public&void&resize(int&width,&int&height)&{&&&&&&}&&&&&@Override&&&&&public&void&resume()&{&&&&&&}&&&&&}&&&
因为没有写实际的东西,所以效果是一个黑黑的框。
498)this.width=498;' onmousewheel = 'javascript:return big(this)' src="/wyfs01/M02/37/60/wKioOVKe4qLRD2xPAAAqFkqzEAM012.jpg" alt="Android游戏引擎libgdx使用教程1:搭建libgdx环境" />
libgdx环境搭建就说到这里。
注意:如果仔细观察Logcat, 就会发现一个error:E/libEGL(382): couldn't load &libhgl.so& library
(Cannot load library: load_library[984]: Library 'libhgl.so' not found)。
这个没什么关系,这是系统尝试加载硬件OpenGL驱动失败了,然后回到软件的处理方法上,不是缺陷或者错误。【编辑推荐】【责任编辑: TEL:(010)】
关于&&&&&&的更多文章
Android操作系统已经成熟,Google开始将注意力转向底层组件,包
既然强大的Android Studio来了,有什么理由不去用呢?
当下,移动App的开发相当火热,Android的和iOS的开发
关于App营销,了解哪类App最能引起用户关注,以及不同
在iOS开发过程中,尤其是对于新手来说,都会遇到或多
本书结合大量的典型实例,详细介绍了用Java来编写网络应用程序的技术。本书的范例都基于最新的JDK 1.5版本,书中内容包括:Java
Windows Phone专家
Android开发专家
51CTO旗下网站1232人阅读
上一讲最后说到两个问题,一个是AndroidApplication的继承来源问题,另一个是libgdx中的ApplicationListener的问题,今天我们主要讨论一下后者。
首先大家可以参见巴士内的一篇文章
这里借用一下该帖子里的图…管理员大人原谅哈..
借用该帖子的话说:
为了初始化Application必须实现ApplicationListener这个接口,它用来更新游戏状态(即逻辑),渲染出项,暂停游戏,保存状态,释放资源等。
它也有一个处理Application声明周期事件的地方。每个应用,不管后台平台版本都必须实现ApplicationListener接口。所有平台都会存在并要实现这个接口。
一个简单的实现如下:
public class MyGame implements ApplicationListener {
public void create () {
public void render () {
public void resize (int width, int height) {
public void pause () {
public void resume () {
public void dispose () {
我简单地画一个图来表示目前我们按照第一讲最后介绍的步骤写出的框架。
很容易看出AndriodApplication(正如前面我提到的那样,继承自Activity,没错,就是我们非常熟悉的Activity)起到了一个Activity的作用,但是我们并不在这个“Activity”中做太多的工作(当然可以做一些保存Context上下文之类的工作),实际的显示工作我们是交给一个实现了ApplicationListener接口的类来实现的,它有所有我们需要的功能:创建,渲染等等。所以实际的情况是,我们在游戏中的大部分实际绘图工作都是放在这个页面进行的。
下面我们将要在上一讲中的基础上,在屏幕上打印一些标识,毕竟眼见为实嘛!(今天的源码会在帖子末尾附上,大家可以下载哦!)
有关这部分更细节的内容可以参见管理员的帖子
我们先打印出一行字:
&Testin—Mkey libgdx(2)&
public class MyGame implements ApplicationListener {
public void create () {
batch=new SpriteBatch();
bf=new BitmapFont();
public void render () {
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
Gdx.gl.glClearColor(0f,0f,0f,0f);
batch.begin();
bf.draw(batch, &Testin——Mkey libgdx(2)&,Gdx.graphics.getWidth()/2, Gdx.graphics.getHeight()/2);
batch.end();
public void resize (int width, int height) {
public void pause () {
public void resume () {
public void dispose () {
batch.dispose();
bf.dispose();
首先记得在create()函数中初始化一下相应的变量,否则会得到空指针。绘图用SpriteBatch,以及字体类BitmapFont,至于后者,我们很显然可以从名字就看出,它的实现是借助图片来实现字体的显示的,那么具体又是怎么一回事呢?我们在后面的教程中都会提到,给大家详细地解答。
这里还有非常重要的一点,就是绘图用SpriteBatch在绘图前一定要调用begin()方法,而在调用后一定要调用end()方法,否则程序都会报错。原因也是很显然的。
一旦ApplicationListener开始运行,render函数就会不停执行,里面的语句也一样被不停地执行,这里对
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
Gdx.gl.glClearColor(0f,0f,0f,0f);
这两条语句做一个简单的解释。稍微熟悉一点opengl的人都能看出来,这是一个
清屏的函数,清除了颜色缓存,并把刷新后的屏幕的颜色置为(0,0,0,0),也就是黑色,如果(1,1,1,0)那么就是白色了。
还有一个地方可以会引起大家的疑问,Gdx.graphics.getWidth()/2。其实很简单,这就是Gdx提供的一些类来获取系统信息。关于Gdx中众多用法不久就会提到。
另外,在dispose()函数中不要忘了对变量执行dispose()方法,在libgdx中,很多资源必须手动释放,否则将一直占用着内存,很可能就此发生OOM(OutOfMemory)的错误,而libgdx中有一个结构Disposable,一般实现了这个接口的类都是需要手动回收的,我们可以查看一下官方的文档,发现libgdx中众多常用的类:,,,
, , , , , , ,,,,
, , , , , , , ,,,,
, , , , , , 都是需要手动回收的,因此一定不要忘记手动回收,Android设备的内存十分有限!
我们运行一下吧:
(里面有一个“—”号没有显示,这是BitmapFont的问题,以后会提到如何解决)
可是不知道大家有没有发现一个问题,就是我们的程序目前只有一个页面,难道我们所有的绘图工作都在一个页面做吗?或者我们切换页面的时候还是要用API的 Intent来切换?当然不是这样的,下一讲,也就是第三讲,我们将一起来看一下如何编写一个多个屏幕或者说是多个游戏容器的application,当然我们不是用API的intent来实现的哦。
这里还要补充一点:屏幕坐标的原点是从左下角开始计算的,这个和一般的情况不太一样,请大家注意一下。
源码地址:
MB, 下载次数: 588)
10:11 上传
点击文件名下载附件
下载积分: 下载豆 -2
Testin ID: 总的而言这个平台真的非常好用!我正是用这个平台发现了现在写的这个应用的一些内存管理方面的问题。另外建议能够在测试报告中看到某一台机型在整个执行过程中的cpu和内存占用的变化情况,这样可以更快地锁定问题。感谢Itestin让测试变得轻松了太多太多!
(50.99 KB, 下载次数: 29)
10:01 上传
点击文件名下载附件
(48.74 KB, 下载次数: 17)
10:01 上传
点击文件名下载附件
(64.14 KB, 下载次数: 16)
10:03 上传
点击文件名下载附件
(23.56 KB, 下载次数:
10:04 上传
点击文件名下载附件
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:861922次
积分:9428
积分:9428
排名:第582名
原创:20篇
转载:831篇
评论:140条
(13)(26)(50)(9)(12)(13)(47)(22)(31)(29)(18)(26)(12)(6)(23)(5)(12)(4)(10)(12)(79)(44)(86)(12)(9)(7)(21)(6)(10)(14)(23)(30)(4)(1)(3)(5)(3)(9)(2)(16)(3)(17)(5)(5)(8)(2)(3)(3)(20)(10)(14)(3)libGDX_百度百科
关闭特色百科用户权威合作手机百科
收藏 查看&libGDX本词条缺少概述、名片图,补充相关内容使词条更完整,还能快速升级,赶紧来吧!协&&&&议Apache License,Version 2.0协议来&&&&源Java/C/C++语言编写而成
libGdx[1]是一个跨平台的2D/3D的游戏开发框架,它由Java/C/C++语言编写而成。它基于Apache License, Version 2.0[2]协议,对商业使用和非商业使用均免费。代码托管于中[3]。最新版本为1.5.0。开源的游戏框架并不少见,但是libgdx的优势是相当明显的,主要是体现在以下几个方面libgdx兼容多种平台系统(Windows、Linux、Max OS X、Java Applet、Javascript/WebGL),包括移动系统Android[4](1.5版本+)和iOS。对于Android平台的支持在Android阵营和相关市场日益扩大的情况下libgdx的使用者越来越多。另外,基于RoboVM可以实现iOS兼容[5]。
同时极强的兼容性为调试和开发提供了便利。你可以使用Android上面同样的代码在桌面PC上面编写,测试,调试你的应用(也就是说,你可以不需要打开Android模拟器,就可以调试用Libgdx引擎写的游戏应用)。它剥离了常见的Windows之间/ Linux应用程序和一个Android应用程序的区别。一般的开发过程是尽可能的在停留桌面PC上,同时周期性的检查你的当前代码是否仍然能在运行。Libgdx主要是用Java写的,其中也掺杂了一些C/C++代码,这些代码是为了处理一些对性能要求很高的操作,比如物理引擎或者音频处理。作为用户,你只需要关注Java的封装就可以了,它已经把所有的本地代码封装好了。相比于其他android游戏引擎,libgdx的效率优势十分明显。libgdx的主要构成如下所示
Libgdx由audio、files、graphics、math、physics、scenes、utils这些主要模块所组成,它们分别对应了Libgdx中的音频操作,文件读取,2D/3D渲染,Libgdx绘图相关运算,Box2D封装,2D/3D游戏组件,以及Libgdx内置工具类。
它提供了便于设计游戏的清晰架构
模块和设计Libgdx对于物理引擎[6]的封装也是让人惊讶的。 它足够疯狂的使用jni封装了box2d的c++版本,使得其运行效率比其他同级的物理引擎如jbox2d快不少。现在流行的几个包含物理引擎Android游戏引擎(如Andengine、Rokon等),几乎都在用libgdx。如果你的游戏(特别是针对Android平台的)准备使用物理引擎,请优先考虑Libgdx。Libgdx还拥有相当数量的开发工具。如Particle editor[7](粒子编辑器),Hiero bitmap font generator[8](文字生成工具),Texture packer[9](图片合并工具),TWL布局编辑器,Gdx Setup UI等。Libgdx最初大部分用于单机游戏或者弱联网游戏,不过经过不断优化,现在Libgdx提供了专门的网络模块。在Google推出实时联网虚拟现实游戏Ingress后,亦有部分国内公司推出了基于Libgdx的网游,比如《无双逐鹿》等。Libgdx现在有第三方的UI编辑器Overlap2D[10],该编辑器由热心的使用者编写。Libgdx的文档数量已经相当完善了,官方的wiki[11]已经有较为完整的基础介绍和一些示例。不过由于官方的示例都是英文的,可能对于部分开发者来说学习难度较大。
当然更多的细节可以在相关社区[12]和其他使用者的文章和讨论中找到答案,博客园中夜明的孤行灯[13]有过一系列的入门文章(现已迁移到对应的独立博客[14]中),这个系列的文章基于0.9.2版本,和最新版本有一些细节上的差异,但是仍不失为国内最完整和全面的教材。
另外在安卓巴士的实用教程板块也有“Mkey libgdx系列教程”的Libgdx入门教程[15],该系列文章虽然没有系统性的介绍,但是对于开发中的诸多细节给出了解决方案,适合对于libgdx有一定了解的开发人员参考。
0.98版本大幅修改了很多细节。奋斗小土豆丶[16]有一系列针对0.98版本的教程,比较适合从低级版本升级而来的用户和初学者参考,也是目前最新版本的教程。Libgdx也并不是十全十美的。目前libgdx对iOS的支持基于RoboVM,而RoboVM本身还处于发展阶段,调试功能比较困难。2009年中期,项目开始,初始名称为AFX[17]。
号,项目开源,代码托管在Google Code上。
2010年4月,第一个外部贡献者Christoph Widulle加入。
2010年5月,新增了Box2D绑定[18]。
2011年9月,0.9.2版本发布。
2012年5月,市场占有率超过1.24%[19],超过了当时的Unity,AndEngine,Cocos2D,Corona和Marmelade。
2012年,Google Ingress使用了Libgdx项目。
2013年,添加3D API支持。
日,1.0正式版发布[20-21]。这里是部分基于libgdx的游戏,你可以在市场中找到他们。
新手上路我有疑问投诉建议参考资料 查看libGDX 1.0 正式发布,Android 游戏引擎 - 看引擎 KENGINE | 看看新闻网 IT资讯
libGDX 1.0 正式发布,Android 游戏引擎
libGDX 1.0 发布,此版本现已提供,主要更新内容如下:
更新了 ,不需要下载二进制包,不需要更多的 jars,支持所有平台的简单打包!
的格式都是视频和 Wiki 文章。
移除了对 ,支持 OpenGL ES 3.0
移除了大量 Android 后端的集群,要求最低 Android 版本是
Box2D 转移到了扩展中
大幅度的改进了 Scene2D,比如
开箱支持 Intel(R) x86 Android 设备
更多内容请看
,到可以尝试最新的安装。
如果用户有基于 Gradle 的项目,请确认是否已经升级到了版本 1.0.0,刷新了 IDE 项目文件!新快照版本是 (==nightly): “1.0.1-SNAPSHOT”。
除了平常的 bug 修复和增强,还更新了 libGDX repo,网站和 wiki;移除了旧的, 移除了和。用户可以直接在浏览器(桌面或者Android设备)上测试。
Libgdx是一个跨平台(Windows,Linux,Android)的游戏开发框架,它主要是用Java写的,其中也参杂了一些C/C++代码,这
些代码是为了处理一些对性能要求很高的操作,比如物理引擎或者音频处理。作为用户,你只需要关注Java端就可以了,它已经把所有的本地代码封装好了。
Libgdx允许你使用Android上面同样的代码在桌面PC上面编写,测试,调试你的应用(也就是说,你可以不需要打开Android模拟器,就可以
调试用Libgdx引擎写的游戏应用),把剥离了常见的Windows之间/
Linux应用程序和一个Android应用程序的区别。一般的开发过程是尽可能的在停留桌面PC上,同时周期性的检查你的当前代码是否仍然能在
Android运行。
Libgdx将尽力提供一个统一的架构你的工作,以保证在所有平台上相同的行为。可悲的是这个崇高的目标肯定达不到。最大的不同点在于桌面PC和
Android设备在于Android设备通常比桌面PC要慢得多。这意味着你的应用在PC上面运行的极快,但在Android运行的就像蜗牛在爬。在本
教程中,我们将会遇到很多能做的和不能做的规则,你应该遵守这些规则,为了保证即使在低端Android,你的应用都拥有良好的运行效果。
Libgdx由audio、files、graphics、math、physics、scenes、utils这些主要类库所组成,它们分别对应了
Libgdx中的音频操作,文件读取,2D/3D渲染,Libgdx绘图相关运算,Box2D封装,2D/3D游戏组件(3D部分目前无组件),以及
Libgdx内置工具类。
No tags for this post.
除非注明,本站文章均为原创或编译,转载请注明: 文章来自
分享给朋友:
查看全部:

我要回帖

更多关于 libgdx ui 的文章

 

随机推荐