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
する でを設定するメソッドです。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 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;
}
}
keyDown
Android デバイスの [戻る] ボタンを押すと、メソッドが呼び出され、メソッドが呼び出されると思いますpauseGame
。
しかし、それは起こっていません。ゲームが終了し、keyDown
メソッドが呼び出されません (メソッド keyDown が呼び出された場合、メッセージをログに記録しようとしていますが、メッセージは表示されません)。
私が抱えている2番目の問題は、メソッドでゲームを一時停止することによって引き起こされpause()
ます。pause
ホームボタンやデバイスに着信があればinのメソッドが呼び出されると思いますGameScreen
。pauseGame
だから、ホームボタンが押されたときにゲームを一時停止したい場合は、 methodでメソッドを呼び出すと思いますpause
。そして、それはうまく機能します。しかし、問題は戻るボタンを押した後に発生するため、ゲームが終了します。ゲームを終了して再起動しようとすると、テクスチャが読み込まれません。
ちなみに、現在は使っていませんAssetManager
がコンストラクタでアセットをロードするメソッドを呼び出しています。