天天看点

libgdx游戏引擎开发笔记(一)引擎介绍和Helloworld

   做Android快一年了,项目也做了四五个,感觉没什么动力向前,思绪整理了一段时间,决定转入Android游戏开发,同时发现了一款强大的游戏引擎libgdx,在此边学边整理,好记性不如烂笔头嘛!

1.libgdx简介

    libgdx是一个跨平台的2D/3D的游戏开发框架,它由Java/C/C++语言编写而成。ibgdx兼容大多数微机平台(标准JavaSE实现,能运行在Mac、Linux、Windows等系统,最近加入了对html5的支持)与Android平台(Android1.5以上即可使用,Android2.1以上可满功率发挥)。Libgdx以native方式自带图像解码器,通过其提供的Pixmap可以对指定图像进行像素级渲染操作,从而不依赖Android的Bitmap加载处理图像,可以支持png、jpg、bmp,最近的两个版本中加入了对gif图片的支持(如果要做大量动画的话,gif图片可以保证在图片质量降低不了太多的情况下成倍地缩小,这点大家都懂的)。

   Libgdx由audio、files、graphics、math、physics、scenes、utils这些主要类库所组成,它们分别对应了Libgdx中的音频操作,文件读取,2D/3D渲染,Libgdx绘图相关运算,Box2D封装,2D/3D游戏组件(3D部分目前无组件),以及Libgdx内置工具类。

<a target="_blank" href="http://blog.51cto.com/attachment/201307/221705694.png"></a>

  至于环境搭建,在此不再赘述,网上一大堆的哦! 大家可以去http://code.google.com/p/libgdx/下载最新的libgdx ,本文使用的libgdx是0.98版本

2.主要类的介绍

   2.1ApplicationListener

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

<code>public</code> <code>class</code> <code>MyGame </code><code>implements</code> <code>ApplicationListener {</code>

<code>        </code><code>public</code> <code>void</code> <code>create () {</code>

<code>                </code><code>// STUB</code>

<code>        </code><code>}</code>

<code>        </code><code>public</code> <code>void</code> <code>render () {</code>

<code>        </code><code>public</code> <code>void</code> <code>resize (</code><code>int</code> <code>width, </code><code>int</code> <code>height) {</code>

<code>        </code><code>public</code> <code>void</code> <code>pause () {</code>

<code>        </code><code>public</code> <code>void</code> <code>resume () {</code>

<code>        </code><code>public</code> <code>void</code> <code>dispose () {</code>

<code>}</code>

    ApplicationListener是一个接口,实现了这个接口的类都有一个共同的特点,它们都会经历一个创建,渲染(render),暂停,继续,销毁等一系列过程,发生对应时间的时候会自用调用相应的函数。特别是render()函数,它是一个系统在不停调用的函数(当然这个实例满足正在运行的条件),因此我们可以把很多操作放在render()函数中实现,不过千万注意不要进行耗时的操作以免堵塞UI线程。

 生命周期:

<a target="_blank" href="http://blog.51cto.com/attachment/201307/224502880.png"></a>

   主要方法:

<a target="_blank" href="http://blog.51cto.com/attachment/201307/224711686.png"></a>

   2.2AndroidApplication

<code>public</code>  <code>class</code> <code>LibgdxActivity </code><code>extends</code>  <code>AndroidApplication {</code>

<code>    </code><code>@Override</code>

<code>    </code><code>public</code> <code>void</code> <code>onCreate(Bundle savedInstanceState) {</code>

<code>        </code><code>super</code><code>.onCreate(savedInstanceState);</code>

<code>        </code><code>initialize(</code><code>new</code> <code>MyGame(), </code><code>false</code><code>);</code>

<code>    </code><code>}</code>

AndroidApplication继承自API中的Activity,因此我们使用它也需要在Manifest中注册,至于initialize(new  MyGame (), false);第一个参数是一个实现了ApplicationApplication接口的类的实例,第二个参数如果设为true,则在opengl 2.0可用的情况下会使用opengl 2.0。

这样,我们的第一个libgdx的HelloWord就成功了,仅仅是个黑屏。。。

     本文转自zhf651555765 51CTO博客,原文链接:http://blog.51cto.com/smallwoniu/1254948

,如需转载请自行联系原作者