`

libgdx简单入门

 
阅读更多
最近一直想找个android的游戏引擎来研究,但是资源少、大多都不太出名,找了半天,发现libgdx还算不错,于是照着官网的例子,运行了下helloworld示例,发现这个引擎还不错,代码相对来说不算复杂,而且功能也算强大(虽然对3d的支持好像很弱),入门也容易。
这个helloworld是官方自带的,主要由两个类组成,一个是HelloWorldAndroid:
public class HelloWorldAndroid extends AndroidApplication {
	@Override
	public void onCreate (Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		initialize(new HelloWorld(), false);
	}
}

这个类首先继承AndroidApplication,然后通过initialize方法初始化场景应用。initialize的内部会完成整个游戏的初始化工作,涉及到各种资源的载入,如input、audio、files、graphics等等,这些都是整个游戏引擎的基本组件。
下面再看看这个示例的核心代码类HelloWorld类:
public class HelloWorld implements ApplicationListener {
	SpriteBatch spriteBatch;
	Texture texture;
	BitmapFont font;
	Vector2 textPosition = new Vector2(100, 100);
	Vector2 textDirection = new Vector2(1, 1);

	@Override
	public void create () {
		Log.v("====create======", "===="+new Date());
		font = new BitmapFont();
		font.setColor(Color.RED);
		texture = new Texture(Gdx.files.internal("data/badlogic.jpg"));
		spriteBatch = new SpriteBatch();
	}

	@Override
	public void render () {
		int centerX = Gdx.graphics.getWidth() / 2;
		int centerY = Gdx.graphics.getHeight() / 2;

		Gdx.graphics.getGL10().glClear(GL10.GL_COLOR_BUFFER_BIT);

		// more fun but confusing :)
		// textPosition.add(textDirection.tmp().mul(Gdx.graphics.getDeltaTime()).mul(60));
		textPosition.x += textDirection.x * Gdx.graphics.getDeltaTime() * 60;
		textPosition.y += textDirection.y * Gdx.graphics.getDeltaTime() * 60;

		if (textPosition.x < 0) {
			textDirection.x = -textDirection.x;
			textPosition.x = 0;
		}
		if (textPosition.x > Gdx.graphics.getWidth()) {
			textDirection.x = -textDirection.x;
			textPosition.x = Gdx.graphics.getWidth();
		}
		if (textPosition.y < 0) {
			textDirection.y = -textDirection.y;
			textPosition.y = 0;
		}
		if (textPosition.y > Gdx.graphics.getHeight()) {
			textDirection.y = -textDirection.y;
			textPosition.y = Gdx.graphics.getHeight();
		}

		spriteBatch.begin();
		spriteBatch.setColor(Color.WHITE);
		spriteBatch.draw(texture, centerX - texture.getWidth() / 2, centerY - texture.getHeight() / 2, 0, 0, texture.getWidth(),
			texture.getHeight());
		font.draw(spriteBatch, "Hello World!", (int)textPosition.x, (int)textPosition.y);
		spriteBatch.end();
	}

	@Override
	public void resize (int width, int height) {
		spriteBatch.getProjectionMatrix().setToOrtho2D(0, 0, width, height);
		textPosition.set(0, 0);
	}
.....


这个类的代码其实并不复杂,最主要内容就是SpriteBatch类的使用,这个类有点类似事务的提交,先把图形规定好,然后用end提交时才真正的开始画。不过这个类的render是一个非常关键的方法,默认情况下,libgdx会一直不断的调用此方法以实现动画效果。至于怎么实现鄙人找了下源代码,看了个把小时还是没发现,初步估计可能是通过本地库实现的。至于libgdx的坐标方向与android系统自带的有些不一样,android本身默认是以左上角为原点,而libgdx则是左下角为原点,向上为y轴,向右为x轴。

这个例子代码可从官方下载,效果如下:




还有一个问题需要注意,那就是libgdx加载的图片的尺寸必须是2的n次方,不然会有错。
如里要想在屏幕上画出中文字体的话,见这篇文章:
http://www.cnblogs.com/htynkn/archive/2011/11/11/libgdx_3.html
  • 大小: 64.9 KB
分享到:
评论

相关推荐

    使用LibGDX开发一个完整游戏 教程全集

    LibGDX提供了Preferences类来存储简单的键值对数据,而更多的复杂数据可以使用JSON或XML序列化。 在这一系列的教程中,你将逐步学习如何使用上述技术和工具,从创建基本的Game类开始,搭建游戏结构,到设计游戏逻辑...

    libGdx初探

    本文将通过一个简单的Demo来介绍如何在libGdx中使用粒子系统,为初学者提供入门指导。 首先,我们需要理解libGdx粒子系统的概念。粒子系统是一种用于模拟大量小对象(粒子)行为的技术,常用于创建火、烟、水、光效...

    braingdx,:视频游戏:基于libgdx的游戏jam框架。.zip

    3. 快速原型开发:braingdx降低了游戏开发的入门门槛,使得开发者可以在短时间内创建出基本的游戏框架,适合游戏jam这类时间紧迫的活动。 4. 简化的输入处理:braingdx提供了简洁的API来处理用户输入,包括键盘、...

    Libgdx document

    在LibGDX中,"Hello World"是一个典型的入门示例,遵循编程传统,通过显示“Hello World”字符串来介绍基本概念和设置。在这个例子中,我们首先看到项目结构,它由几个特定于平台的文件夹(如-android、-desktop和-...

    android游戏引擎libGDX 实例和源码gdx-helloworld-0.9.1,很不错的,强烈推荐

    在本实例中,"gdx-helloworld-0.9.1"是一个基于LibGDX的游戏入门项目,非常适合初学者学习和理解LibGDX的基本用法。 LibGDX的核心组件包括以下几个部分: 1. **Backend**:LibGDX提供了不同平台的后端支持,如...

    基于libgdx引擎的沙雕之主开源游戏设计源码

    本项目是基于libgdx引擎开发的沙雕之主开源游戏设计源码,包含153个文件,其中Java源文件44个,PNG图片40张,TMX地图文件19个,JPG图片8张,...该游戏项目主要用于初中生练习编程技能,项目简单有趣,适合初学者入门。

    OneSecondChallenge:使用 libGDX 的简单 Android 游戏

    **libGDX入门** libGDX提供了一套完整的工具集,包括图形渲染、音频处理、输入管理等,使开发者能够快速构建游戏。首先,我们需要在项目中引入libGDX库,这可以通过Gradle配置完成。创建一个新的libGDX项目时,会...

    Fleet_Destroyer_libGDX

    "Fleet_Destroyer_libGDX"项目就是基于LibGDX开发的一款简单游戏,玩家可以通过点击或轻触屏幕上的X翼战机来摧毁TIE战斗机,实现了Android和Windows平台的兼容性。 一、LibGDX基础介绍 LibGDX是一个用Java编写的...

    ProjetGDX:使用 Libgdx 框架的简单 Android 应用程序

    总的来说,"ProjetGDX"项目是一个入门级的教程,教导开发者如何利用Libgdx这个强大的框架来开发Android应用程序,涉及到的知识点包括Libgdx的架构、屏幕管理、图形渲染、音频播放、事件处理以及如何在Java环境中配置...

    JavaGame游戏开发入门源码15个合集.zip

    5. **游戏框架应用**:可能包含使用libGDX或Slick2D等开源游戏框架开发的更复杂游戏,这些框架提供了丰富的功能,包括动画、音效和物理模拟。 通过研究这些源码,你可以学习到: - **面向对象编程**:Java是面向...

    test:libgdx默认程序(badlogic徽标)

    【标题】"test:libgdx默认程序(badlogic徽标)" 提示我们这是一个关于LibGDX游戏...总之,这个项目提供了一个基础的LibGDX入门示例,结合了持续集成的实践,对于学习LibGDX框架和理解持续集成流程都有一定的参考价值。

    J2ME手机游戏编程入门

    ### J2ME手机游戏编程入门知识点详解 #### 一、目标读者及预备知识 - **目标读者**: 本教程主要面向那些已经有一定Java基础但希望重新熟悉Java或想要利用Java进行手机游戏编程的学习者。 - **预备知识**: 建议读者...

    Android.游戏开发入门

    【Android游戏开发入门】这本书是针对想要进入Android游戏开发领域的初学者所编写的高清英文完整版教程。书中通过图文并茂的方式,使学习过程更为生动有趣。作者(美)Mario Zechner以其丰富的经验,详细介绍了如何...

    新入门 Java 游戏编程教程系列

    在本"新入门 Java 游戏编程教程系列"中,你将逐步学习以上各个知识点,并通过实践项目加深理解。教程会引导你从创建简单的命令行游戏开始,逐渐过渡到开发具有复杂图形和网络功能的完整游戏。通过这个过程,你不仅能...

    android游戏开发入门级经典实例

    "android游戏开发入门级经典实例"这个主题旨在为初学者提供简单易懂的游戏开发实践,帮助他们快速进入Android游戏开发的世界。虽然这个实例集要求学习者具备一定的J2SE(Java 2 Platform, Standard Edition)基础,...

    Android游戏框架AndEngine使用入门

    ### Android游戏框架AndEngine使用入门 #### 一、AndEngine引擎概述 AndEngine是一个用于开发Android平台2D游戏的游戏框架,它使用OpenGL ES来进行图形渲染,支持Android 1.6及以上的版本。相比于其他游戏引擎如...

    Android 4 游戏编程入门经典(英文完整版)

    《Android 4 游戏编程入门经典》作为一本关于移动游戏开发的教程书籍,它涵盖了成为一名专业Android游戏开发者的必要知识。本书的主要内容分为几个部分,包括但不限于Android开发工具的设置和使用、2D游戏编程、...

    Androidstudio游戏入门碰撞图片.zip

    这个"Androidstudio游戏入门碰撞图片.zip"文件显然包含了用于2D游戏开发的一些基础元素,特别是关于物体碰撞检测和屏幕边缘反弹的图像资源。我们将深入探讨这些知识点。 首先,2D游戏开发在Android Studio中主要...

Global site tag (gtag.js) - Google Analytics