LibGDX游戏与ApplicationAdapter


12

当我创建一个新的LibGDX项目时,Core项目的主类扩展了ApplicationAdapter。这是它的样子。

package com.marimba.apptest;

import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL20;

public class AppMain extends ApplicationAdapter {   
    @Override
    public void create () {

    }

    @Override
    public void render () {
        Gdx.gl.glClearColor(1, 0, 0, 1);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

    }
}

因此,如果要调用setScreen方法以便在屏幕之间切换,则必须将ApplicationAdapter更改为Game。那么ApplicationAdapter的用途是什么?我什么时候使用?

Answers:


7

正如@ user3068350所说,Game和ApplicationAdapter都实现ApplicationListener。如果您打算在游戏中使用屏幕界面,则扩展Game很有用,但是某些开发人员可能希望采用其他方法并以自己的方式处理屏幕管理。如果是这种情况,这些将扩展ApplicationAdapter。

就我个人而言,我喜欢我的类实现自定义的Updatable和/或Drawable接口,因为我将我的render方法分离为update和draw。在这种情况下,使用Screen将无法达到目的,因为接口包含了render方法。


1

Game类实现ApplicationListener接口,并且只是一个旨在简化在不同屏幕之间切换的类。当调用ApplicationListener中的方法时,Game类将把它委派给当前设置的屏幕。


1
但是什么时候应该使用ApplicationAdapter?以及如何在这里使用屏幕。
Vahe Muradyan 2015年

2
您不需要使用ApplicationAdapter。ApplicationAdapter和Game都实现ApplicationListener接口。适配器类只是为接口提供框架实现的类,因此您不必用空的方法主体来使代码混乱。要将屏幕与Game一起使用,请调用setScreen并传入实现Screen接口的类。您可以使屏幕类在构造函数中使用Game对象,以便可以在屏幕内更改屏幕。
user3068350 2015年

1
那为什么他们创建了ApplicationAdapter如果没有用呢?
Vahe Muradyan 2015年

2
@VaheMuradyan,用户已经回答:您不必用空的方法主体来弄乱代码。ApplicationListener直接实现时,您必须提供所有必需的方法,包括不需要的方法(例如pause()resume(),不一定总是使用)。ApplicationAdapter在那里是为了您的方便,所以您不必留空方法。这是一个简单的实用程序类,它没有添加任何新功能-只是使您的代码更简洁(或更短)。
JustACluelessNewbie

1

由于ApplicationAdapter和Game类实现了ApplicationListener接口,因此在创建游戏时它们几乎可以互换使用。如果您设置使用屏幕,那么没有什么会阻止您同时使用这两个选项来实现它们。

游戏类有更多一点的开销使用屏幕它。但是,此开销的目的是使在游戏中实现不同阶段/级别变得更加容易。重要的是要注意,这种开销很小。

ApplicationAdapter没有额外的开销(它是直的实现的ApplicationListener)。由于您必须自己做所有事情,因此可以提供更多控制权。就个人而言,我更喜欢使用ApplicationAdapters。

TL; DR:它们之间没有真正的区别。ApplicationAdapter给您更多的控制权,而游戏则少一些工作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.