首先,我试图抓住钥匙,以便游戏暂停.我已经在我的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中暂停和恢复?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)