Libgdx生命周期和模块介绍

Libgdx生命周期

Libgdx 游戏实现了ApplicationAdapter ,ApplicationAdapter包含了整个游戏的生命周期,ApplicationAdapter 又继承自ApplicationListener。
当游戏创建之后先调用ApplicationAdapter的create函数,来初始化游戏资源。
这里写图片描述

MethodDescription
create ()当Application一创建的时候就会调用此方法
resize(int width, int height)当游戏第一次创建的时候会调用一次,以后每当游戏窗口改变的时候会再次调用(单位像素)
render ()游戏的主要进行,更新游戏的各种数据
pause ()当游戏窗口unfoucs时调用此函数
resume ()当游戏窗口foucs时调用此函数
dispose ()当Application销毁时,调用此函数
public class LibgdxGame extends ApplicationAdapter {
    SpriteBatch batch;
    Texture img;

    @Override
    public void create () {
        Gdx.app.log("LibgdxGame", "create");
        batch = new SpriteBatch();
        img = new Texture("badlogic.jpg");
    }

    @Override
    public void render () {
        Gdx.gl.glClearColor(1, 0, 0, 1);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
        batch.begin();
        batch.draw(img, 0, 0);
        batch.end();
    }

    @Override
    public void resize(int width, int height) {
        Gdx.app.log("LibgdxGame", "resize");
    }

    @Override
    public void pause() {
        Gdx.app.log("LibgdxGame", "pause");
    }

    @Override
    public void resume() {
        Gdx.app.log("LibgdxGame", "resume");
    }

    @Override
    public void dispose() {
        Gdx.app.log("LibgdxGame", "dispose");
    }   

}

Libgdx游戏的主要模块

Libgdx提供了5大模块让你方便的访问libgdx的服务,5个模块在backends都有具体的实现。
* Input - 提供了标准的输入让你方便访问各个平台,支持键盘、鼠标、加速器等
* Graphics - 基于OpenGL ES,让你方便的再屏幕上绘制图形
* Files - 抽象的文件系统,方便在各个平台上读写文件
* Audio - 在各个平台上加载和播放音乐
* Networking - 提供了各种方法来访问网络
下面图片显示了5个模块在游戏架构中的组成
这里写图片描述
Input 输入主要包含2种,一种是主动查询(Gdx.input.getX()),另外一种是事件监听(EventListener),input也提供方法来设置监听processors。下面方法查询鼠标在屏幕上的点击位置

if (Gdx.input.isTouched()) {
  System.out.println("Input occurred at x=" + Gdx.input.getX() + ", y=" + Gdx.input.getY()); 
}

Graphics 高度抽象的模块,用来和GPU进行通信,而且提供了获取OpenGL ES的方法。依赖于硬件,一些封装的OpenGL ES的版本可能不能用。Graphics同时提供了方法来生成Pixmaps 和 Textures。
下面方法是获取GL的版本,并且清屏把屏幕画成红色

GL20 gl = Gdx.graphics.getGL20 ();
gl.glClearColor(1f, 0.0f, 0.0f, 1);
gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

Files 提供抽象的方法来读写各个平台的文件。在写入文件的时候由于平台安全策略导致写入受限。加载纹理时用到的方法

1. Texture myTexture = new Texture(Gdx.files.internal(“assets/texture/brick.png”));
2. FileHandle handle =Gdx.files.internal("data/myfile.txt");
3. FileHandle handle =Gdx.files.classpath("myfile.txt");//将位于项目目录下
4. FileHandle handle =Gdx.files.external("myfile.txt");//位于用户home目录,windows C:\User   linux  macos   /user/<user>/myfile.txt
5. FileHandle handle =Gdx.files.absolute("/some_dir/subdir/myfile.txt");//获取绝对路径的文件
6. Internal Files:与程序一起打包的所有 assets 下的文件都是内部文件(Internal Files)
Local Files :如果您需要写一些小文件,如游戏的状态,使用 local Files.这些都是一般私有到应用程序中。
External Files:如果你想写一些大文件,例如截图或者下载好的文件,可以存储到External Files,应该注意的是,外部文件是不稳定的,用户可以删除或者移动你写出的文件。

Audio 提供抽象的方法来加载和播放游戏中用到的声音资源。处理2中游戏声音 Music和Sound。支持的音频格式WAV, MP3 and OGG 。
Sound资源加载在内存中,一般处理游戏音效,比如爆炸声 枪声
Music资源以流媒体的形式从磁盘中读取,一般作为BGM

Music music = Gdx.audio.newMusic(Gdx.files.getFileHandle("data/myMusicFile.mp3", FileType.Internal));
music.setVolume(0.5f);
music.play();
music.setLooping(true);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值