私はアプリを作ったが、うまくいくが、何か変わったことが起こる。 1回目のアプリケーションをインストールして起動してonPauseを入れ、携帯電話をロックしてからアイコンをクリックして再開し、読み込まれたらBACKボタン(Gdx.app.exit();)をクリックすると、私は次の例外を除いて:致命的な例外:GLThread on 1st launch
E/AndroidRuntime: FATAL EXCEPTION: GLThread 1723
java.lang.NullPointerException
at com.badlogic.gdx.Game.render(Game.java:46)
at com.badlogic.gdx.backends.android.AndroidGraphics.onDrawFrame(AndroidGraphics.java:459)
at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1524)
at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1248)
あなたは再びアプリケーションを起動し、正常に動作した後。 このエラーを解消しようとして、gdx-setup.jarを使って新しいプロジェクトを作成しました。私はAndroidLauncherを変更していませんでした。マニフェストでのみ、風景を肖像画に変えました。私はコードがほとんどない4つのクラスしか持っていません。問題はまだあります。誰かが何が起こるか知っているかもしれません。私はどんな助けにも感謝します。ありがとう!
マイコード:
メインクラス。
public class TenPuzzle extends Game {
@Override
public void create() {
setScreen(new SplashScreen(this));
}
}
SpalashScreen.java
public class SplashScreen extends Screens{
public SplashScreen(TenPuzzle ten) {
super(ten);
Gdx.app.log("1010", "SPLASH");
}
@Override
public void draw(float delta) {
game.setScreen(new MainMenuScreen(game));
}
@Override
public void update(float delta) {
}
}
MainMenuScreen.java
public class MainMenuScreen extends Screens {
public MainMenuScreen(TenPuzzle ten) {
super(ten);
Gdx.app.log("1010", "Main menu screen");
}
@Override
public void draw(float delta) {}
@Override
public void update(float delta) {}
public boolean keyDown(int keycode) {
if(keycode == Input.Keys.BACK){
Gdx.app.exit();
}
return false;
}
}
とScreens.java
public abstract class Screens extends InputAdapter implements Screen {
public static float SCREEN_WIDTH = 575;
public static float SCREEN_HEIGHT = 1024;
public TenPuzzle game;
public OrthographicCamera oCam;
public SpriteBatch batcher;
public Stage stage;
public static float diffViewportStage;
public Screens(TenPuzzle game) {
this.game = game;
stage = new Stage(new ExtendViewport(Screens.SCREEN_WIDTH,
Screens.SCREEN_HEIGHT, 768, 1224));
oCam = new OrthographicCamera(stage.getWidth(), stage.getHeight());
oCam.position.set(stage.getWidth()/ 2,stage.getHeight()/2f, 0);
InputMultiplexer input = new InputMultiplexer(this, stage);
Gdx.input.setInputProcessor(input);
Gdx.input.setCatchBackKey(true);
}
@Override
public void render(float delta) {
update(delta);
oCam.update();
stage.act(delta);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
draw(delta);
stage.draw();
}
public abstract void draw(float delta);
public abstract void update(float delta);
@Override
public void resize(int width, int height) {
stage.getViewport().update(width, height, true);
}
@Override
public void show() {
}
@Override
public void hide() {
}
@Override
public void pause() {
}
@Override
public void resume() {
}
@Override
public void dispose() {
stage.dispose();
}
@Override
public boolean keyDown(int keycode) {
return super.keyDown(keycode);
}
}
ようこそStackOverflow。まず、投稿にいくつかの '}'があります。間違っている人やコードにはそれらの人がいますか?いずれかの方法で修正してください。第二に、あなたのコードはやや長いです。あなたはそれをさらに減らそうとしましたか?たとえば、空の関数を削除します。サイズをさらに減らすと、あなたの質問にもっと注意を払うと思います(http://stackoverflow.com/help/mcveによる)。宜しくお願いします。 – YakovL
@ヤコブラ[OK]をすべてチェックしました。投稿中は間違いでした。そしてコードを少しきれいにしました。とにかく、ほとんど何もないし、私はまだこのエラーがあります。 – ketty