android – 如何使用后退键在LibGDX中暂停和恢复?

android – 如何使用后退键在LibGDX中暂停和恢复?,第1张

概述我正在使用LibGDX创建游戏.现在我有两个问题. 首先,我试图抓住钥匙,以便游戏暂停.我已经在我的Game类中调用了Gdx.input.setCatchBackKey(true)方法.这是代码: public class CvSGame extends Game { public Preferences prefs; @Override public void crea 我正在使用libGDX创建游戏.现在我有两个问题.

首先,我试图抓住钥匙,以便游戏暂停.我已经在我的Game类中调用了Gdx.input.setCatchBackKey(true)方法.这是代码:

public class CvSGame extends Game {    public Preferences prefs;    @OverrIDe    public voID create() {          Gdx.input.setCatchBackKey(true);        prefs = Gdx.app.getPreferences("game_pref");        //setScreen(new SplashScreen(this));        //setScreen(new HomeScreen(this));        //setScreen(new GameScreen(this));        GamePlay.initialized(this);    }}

GamePlay.initialized是一种使用GameScreen设置Game的方法,GameScreen实现了Screen和inputProcessor.

在GameScreen中,我已经调用了setinputProcessor. GameScreen的代码是:

public class GameScreen implements Screen,inputProcessor{    CvSGame parent;    public GameScreen(CvSGame pParent){        parent = pParent;        Gdx.input.setinputProcessor(this);    }    @OverrIDe    public voID show() {    }    @OverrIDe    public voID resize(int wIDth,int height) {    }    @OverrIDe    public voID render(float delta) {    }    @OverrIDe    public voID hIDe() {    }    @OverrIDe    public voID pause() {    }    @OverrIDe    public voID resume() {    }    @OverrIDe    public voID dispose() {    }    @OverrIDe    public boolean keyDown(int keycode) {        if(keycode == Keys.BACK) {            pauseGame();        }        return false;    }    @OverrIDe    public boolean keyUp(int keycode) {        return false;    }    @OverrIDe    public boolean keyTyped(char character) {        return false;    }    @OverrIDe    public boolean touchDown(int screenX,int screenY,int pointer,int button) {        return false;    }    @OverrIDe    public boolean touchUp(int screenX,int button) {        return false;    }    @OverrIDe    public boolean touchDragged(int screenX,int pointer) {        return false;    }    @OverrIDe    public boolean mouseMoved(int screenX,int screenY) {        return false;    }    @OverrIDe    public boolean scrolled(int amount) {        return false;    }    private voID pauseGame(){        GamePlay.gameState = GamePlay.PAUSED;    }}

我想,如果我的AndroID设备上的Back按钮被按下,它将调用keyDown方法并调用方法pauseGame.

但是,这没有发生.我的游戏正在退出并且没有调用keyDown方法(如果调用方法keyDown,我已经尝试记录消息,但消息永远不会出现).

我遇到的第二个问题是暂停游戏与暂停()方法.我认为如果主页按钮或设备接到呼叫,将调用GameScreen中的方法暂停.所以,我想如果我想在按下主页按钮时暂停我的游戏,我会在方法暂停中调用方法pauseGame.它运作良好.但问题出现在我按下后退按钮以便游戏退出.游戏退出后我尝试再次启动它,我的纹理没有加载.

顺便说一句,目前我没有使用AssetManager,而是调用一个方法来在构造函数中加载资源.

解决方法 我的理解是你需要在调用setCatchBackKey之前设置你的inputProcessor.您可以通过将GameScreen构造函数更改为:

public GameScreen(CvSGame pParent) {    parent = pParent;    Gdx.input.setinputProcessor(this);    Gdx.input.setCatchBackKey(true);}

相关问题:In libgdx,how do I get input from the back button?

至于纹理没有加载.确保在游戏被销毁(处理功能)时,您正在卸载所有纹理并处理它们.重新创建游戏时,请务必再次加载它们.

列出的所有类别here都需要手动处理,否则会导致泄漏.关于纹理,您可能会遇到加载纹理的问题,而无需先处理旧版本.

总结

以上是内存溢出为你收集整理的android – 如何使用后退键在LibGDX中暂停和恢复?全部内容,希望文章能够帮你解决android – 如何使用后退键在LibGDX中暂停和恢复?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1127409.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存