2016-12-27 5 views
0

は、libgdxの画面をどのように変更するのか不思議に思っています(画面実装画面)。私は電話でscreentapの画面を変更しようとしたり、スペースをPCに押し込んだりしようとしましたが、ゲームはまったく反応しません。何か案は?画面libgdxを変更しても動作しない

ゲームクラス:

package com.kapres.bounce; 

import com.badlogic.gdx.Game; 

/** 
* Created by KnutAndre on 12/20/2016. 
*/ 

public class BounceGame extends Game { 
@Override 
public void create() { 
    showMenuScreen(); 
} 

public void showMenuScreen(){ 
    setScreen(new MenuScreen(this)); 
} 

public void showGameScreen(){ 
    setScreen(new GameScreen()); 
} 
} 

メニュー画面:

package com.kapres.bounce; 

import com.badlogic.gdx.Gdx; 
import com.badlogic.gdx.Input; 
import com.badlogic.gdx.InputAdapter; 
import com.badlogic.gdx.Screen; 
import com.badlogic.gdx.graphics.Color; 
import com.badlogic.gdx.graphics.GL20; 
import com.badlogic.gdx.graphics.glutils.ShapeRenderer; 
import com.badlogic.gdx.utils.viewport.FitViewport; 

/** 
* Created by KnutAndre on 12/26/2016. 
*/ 

public class MenuScreen extends InputAdapter implements Screen { 

BounceGame game; 

ShapeRenderer renderer; 
FitViewport menuViewport; 

public MenuScreen(BounceGame game) {this.game = game;} 

@Override 
public void show() { 
    renderer = new ShapeRenderer(); 
    menuViewport = new FitViewport(Constants.WORLD_WIDTH, Constants.WORLD_HEIGTH); 
    renderer.setAutoShapeType(true); 
} 

@Override 
public void render(float delta) { 
    menuViewport.apply(true); 

    Gdx.gl.glClearColor(Constants.BACKGROUND_COLOR.r, Constants.BACKGROUND_COLOR.g, Constants.BACKGROUND_COLOR.b, 1); 
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 

    renderer.setProjectionMatrix(menuViewport.getCamera().combined); 

    renderer.begin(); 
    renderer.set(ShapeRenderer.ShapeType.Filled); 
    renderer.setColor(Color.GREEN); 
    renderer.circle(Constants.WORLD_WIDTH/2, Constants.WORLD_HEIGTH/2, Constants.START_BUTTON_RADIUS, 50); 
    renderer.end(); 
} 

@Override 

public void resize(int width, int height) { 
    menuViewport.update(width, height, true); 
    // menuViewport.getCamera().position.set(Constants.WORLD_WIDTH/2, Constants.WORLD_HEIGTH/2); 
} 

@Override 
public void pause() { 

} 

@Override 
public void resume() { 

} 

@Override 
public void hide() { 
    renderer.dispose(); 
} 

@Override 
public void dispose() { 
    renderer.dispose(); 
} 

@Override 
public boolean keyDown(int keyCode) { 
    if (keyCode == Input.Keys.SPACE){ 
     game.showGameScreen(); 
    } 
    return true; 
} 

@Override 
public boolean touchDown(int screenX, int screenY, int pointer, int button){ 
    game.showGameScreen(); 
    return true; 
} 

}

ゲーム画面:

package com.kapres.bounce; 

import com.badlogic.gdx.Gdx; 
import com.badlogic.gdx.Screen; 
import com.badlogic.gdx.graphics.GL20; 
import com.badlogic.gdx.graphics.glutils.ShapeRenderer; 
import com.badlogic.gdx.utils.viewport.FitViewport; 


/** 
* Created by KnutAndre on 12/20/2016. 
*/ 

public class GameScreen implements Screen{ 

ShapeRenderer renderer; 
FitViewport gameViewport; 
Ball ball; 

@Override 
public void show() { 
    renderer = new ShapeRenderer(); 
    renderer.setAutoShapeType(true); 
    gameViewport = new FitViewport(Constants.WORLD_WIDTH, Constants.WORLD_HEIGTH); 
    ball = new Ball(gameViewport); 
    Gdx.input.setInputProcessor(ball); 
} 

@Override 
public void render(float delta) { 
    gameViewport.apply(true); 

    Gdx.gl.glClearColor(Constants.BACKGROUND_COLOR.r, Constants.BACKGROUND_COLOR.g, Constants.BACKGROUND_COLOR.b, 1); 
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 

    renderer.setProjectionMatrix(gameViewport.getCamera().combined); 

    renderer.begin(); 
    ball.render(renderer, delta); 
    renderer.end(); 
} 

@Override 
public void resize(int width, int height) { 
    gameViewport.update(width, height, true); 
    ball.init(); 
} 

@Override 
public void pause() { 

} 

@Override 
public void resume() { 

} 

@Override 
public void hide() { 

} 

@Override 
public void dispose() { 
    renderer.dispose(); 
} 
} 

答えて

0

あなたが入力プロセッサ

Gdx.input.setInputProcessor(var); 

を設定するのを忘れようにあなたがMenuScreenshow()方法でこのメソッドを呼び出す必要が見えます。このようにしてエンジンはあなたの入力プロセッサ*を認識します。

コード意志は次のようになります。

public class MenuScreen extends InputAdapter implements Screen { 

    ... 

    @Override 
    public void show() { 
     Gdx.input.setInputProcessor(this); 
     ... 
    } 

    ... 
} 

* InputAdapterInputProcessorインタフェースを実装するだけのクラスです。

同時に複数の入力プロセッサが必要な場合に備えて、InputMultiplexerというクラスもあります。

ドキュメント:

InputProcessor

InputAdapter

InputMultiplexer

0

はあなたでsuper.render()を呼び出すことを忘れないでください。 BounceGameクラスのメソッド(それはあなたのスニペットに提示していないが)、例えば:それはnullではない場合

@Override 
public void render() { 
    super.render(); 
    if (Gdx.input.isKeyJustPressed(Input.Keys.ESCAPE)) { 
     Gdx.app.exit(); 
    } 
} 

それは画面をレンダリングする(例えば、前にsetScreen(new MainScreen())メソッドが呼び出されました)。スーパーGameからrender()方法:

@Override 
public void render() { 
    if (screen != null) screen.render(Gdx.graphics.getDeltaTime()); 
} 
関連する問題