Android游戏开发十日通(2)-搭建libgdx游戏引擎-创新互联-成都快上网建站

Android游戏开发十日通(2)-搭建libgdx游戏引擎-创新互联

libgdx简介

libgdx是一个跨平台的2D/3D的游戏开发框架,它由Java/C/C++语言编写而成。它基于Apache License, Version 2.0协议,对商业使用和非商业使用均免费。

创新互联公司网站建设公司一直秉承“诚信做人,踏实做事”的原则,不欺瞒客户,是我们最起码的底线! 以服务为基础,以质量求生存,以技术求发展,成交一个客户多一个朋友!专注中小微企业官网定制,网站建设、成都网站制作,塑造企业网络形象打造互联网企业效应。

libgdx兼容Windows、Linux、Max OS X、Java Applet、Javascript/WebGL与Android[4](1.5版本+)平台。对于Android平台的支持在Android阵营和相关市场日益扩大的情况下libgdx的使用者越来越多。另外,基于MonoTouch,可以实现IOS兼容。


官方网站:http://libgdx.badlogicgames.com/


搭建开发环境

操作系统:Opensuse12.2

开始前请确保配置好android开发环境。jdk最好用1.6的,官网说1.7会有bug。


1)下载libgdx-http://libgdx.badlogicgames.com/download.html

选择Release Builds。

Android游戏开发十日通(2)-搭建libgdx游戏引擎




下载好之后解压文件,就像这样:

Android游戏开发十日通(2)-搭建libgdx游戏引擎


2)自动生产开发工程

包中自带的gdx-setup-ui可以用来自动生成项目工程,免去了繁琐的初始化配置过程。

终端进入到解压后的文件夹,运行

java -jar gdx-setup-ui.jar

利用工具创建工程,参数如下:

Android游戏开发十日通(2)-搭建libgdx游戏引擎


注意左下角要选定Generate the desktop project,方便开发调试。

中间的libGDX要是绿色的才能生成项目,红色的话点击文件夹小图标定位到之前下载好的zip文件。

最后点击偶下角的Open the generation screen->launch

Android游戏开发十日通(2)-搭建libgdx游戏引擎


在当前文件夹下面会生产三个对应的目录,如图:

Android游戏开发十日通(2)-搭建libgdx游戏引擎


3)导入工程

在eclipse中首先导入游戏工程和desktop工程。

File->import

Android游戏开发十日通(2)-搭建libgdx游戏引擎

选中刚才创建好的test-gdx-game文件夹->finish。

同样的方法导入test-gdx-game-desktop。

接下来导入android工程。

eclipse下面Ctrl+n - >Android project from exiting project->选中test-gdx-game-android->finish.

三个工程导入完成后,还需要修改一些地方。

由于我们创建项目的时候是同时创建了android版本和desktop版本,gamecode 其实都在test-gdx-game中,而资源文件其实都放在了android项目中asset文件夹中。

直接运行desktop项目会报错,提示找不到资源文件。这里需要在desktop项目中添加一个链接。

右击test-gdx-game-desktop->project -> Properties -> Java Build Path -> Source tab -> Link Source… -> Browse… -> 定位到 test-gdx-game-android project 的assert文件夹,点 Finish。

工程就算建立完成了。

desktop和android都可以直接运行,调用的是test-gdx-game中的代码。

各自的运行结果如下:

Android游戏开发十日通(2)-搭建libgdx游戏引擎

Android游戏开发十日通(2)-搭建libgdx游戏引擎



项目解析

为了初始化Application必须实现ApplicationListener这个接口, 它用来更新游戏状态(即逻辑),渲染出项,暂停游戏,保存状态,释放资源等。
它也有一个处理Application 声明周期事件的地方。每个应用,不管后台平台版本都必须实现ApplicationListener 接口。所有平台都会存在并要实现这个接口。

看一下项目代码:

package com.me.testgdxgame;  import com.badlogic.gdx.ApplicationListener; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.graphics.GL10; import com.badlogic.gdx.graphics.OrthographicCamera; import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.Texture.TextureFilter; import com.badlogic.gdx.graphics.g2d.Sprite; import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.badlogic.gdx.graphics.g2d.TextureRegion;  public class TestGdxGame implements ApplicationListener { 	private OrthographicCamera camera; 	private SpriteBatch batch; 	private Texture texture; 	private Sprite sprite; 	 	@Override 	public void create() {		 		float w = Gdx.graphics.getWidth(); 		float h = Gdx.graphics.getHeight(); 		 		camera = new OrthographicCamera(1, h/w); 		batch = new SpriteBatch(); 		 		texture = new Texture(Gdx.files.internal("data/libgdx.png")); 		texture.setFilter(TextureFilter.Linear, TextureFilter.Linear); 		 		TextureRegion region = new TextureRegion(texture, 0, 0, 512, 275); 		 		sprite = new Sprite(region); 		sprite.setSize(0.9f, 0.9f * sprite.getHeight() / sprite.getWidth()); 		sprite.setOrigin(sprite.getWidth()/2, sprite.getHeight()/2); 		sprite.setPosition(-sprite.getWidth()/2, -sprite.getHeight()/2); 	}  	@Override 	public void dispose() { 		batch.dispose(); 		texture.dispose(); 	}  	@Override 	public void render() {		 		Gdx.gl.glClearColor(1, 1, 1, 1); 		Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT); 		 		batch.setProjectionMatrix(camera.combined); 		batch.begin(); 		sprite.draw(batch); 		batch.end(); 	}  	@Override 	public void resize(int width, int height) { 	}  	@Override 	public void pause() { 	}  	@Override 	public void resume() { 	} }

生命周期如下:

Android游戏开发十日通(2)-搭建libgdx游戏引擎



几个重要的方法:

create() : 当应用程序创建时,此方法被调用一次。

resize(int width,int,height): 每次游戏屏幕重置并且不是暂停状态的时候调用此方法。在create()后调用一次。参数是屏幕被重置后的新狂读和高度。

render(): 每次渲染发生时游戏循环调用此方法。游戏更新发生在绘制之前。意思就是说先处理逻辑再处理绘制。

pause(): 在应用destroyed()前调用此方法。在android中Home键按下或者重新进入程序时调用。这是一个保存游戏状态的好地方,在android中的resume不一定会调用。

resuem(): 这个方法爱尽在android中调用,当应用获得焦点时,桌面应用中将不会调用此方法。

dispose(): 当应用destroyed时,调用此方法,在pause()之后。


创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。


分享标题:Android游戏开发十日通(2)-搭建libgdx游戏引擎-创新互联
文章转载:http://kswjz.com/article/djejdh.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流