LibGDX を使用してゲームを作成しています。今、私には2つの問題があります。
まず、ゲームが一時停止するようにキーをキャッチしようとしています。私はすでに自分のクラスでGdx.input.setCatchBackKey(true)メソッドを呼び出しています。Gameコードは次のとおりです。
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とを実装Gameする でを設定するメソッドです。GameScreenScreenInputProcessor
では、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 screenY, int pointer, int button) {
return false;
}
@Override
public boolean touchDragged(int screenX, int screenY, 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;
}
}
keyDownAndroid デバイスの [戻る] ボタンを押すと、メソッドが呼び出され、メソッドが呼び出されると思いますpauseGame。
しかし、それは起こっていません。ゲームが終了し、keyDownメソッドが呼び出されません (メソッド keyDown が呼び出された場合、メッセージをログに記録しようとしていますが、メッセージは表示されません)。
私が抱えている2番目の問題は、メソッドでゲームを一時停止することによって引き起こされpause()ます。pauseホームボタンやデバイスに着信があればinのメソッドが呼び出されると思いますGameScreen。pauseGameだから、ホームボタンが押されたときにゲームを一時停止したい場合は、 methodでメソッドを呼び出すと思いますpause。そして、それはうまく機能します。しかし、問題は戻るボタンを押した後に発生するため、ゲームが終了します。ゲームを終了して再起動しようとすると、テクスチャが読み込まれません。
ちなみに、現在は使っていませんAssetManagerがコンストラクタでアセットをロードするメソッドを呼び出しています。