0

2 つの画面があり、それらの間を移動できるようにしたいと考えています。1 つはロード時に開き、これは gameScreen と呼ばれます。もう一方は別と呼ばれます。ゲームは何もしません。私はちょうどlibgdxで遊んでいます。これは私のコードです

gameScreenを開くメインクラス

メインクラス MyGdxGame にはこれが含まれています

package com.me.mygdxgame;

import com.badlogic.gdx.Game;
import com.me.mygdxgame.gameScreen;

public class MyGdxGame extends Game{

public gameScreen game;

@Override
public void create() {  
    game = new gameScreen(this);
    setScreen(game);
    }
}

ゲーム画面は

package com.me.mygdxgame;

import com.badlogic.gdx.Game;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Screen;
import com.badlogic.gdx.graphics.GL10;
import com.badlogic.gdx.graphics.OrthographicCamera;

public class gameScreen extends Game implements Screen{

OrthographicCamera camera;
 private MyGdxGame game;

 public Another game2;


public gameScreen (MyGdxGame game) {
    this.game=game;
    camera=new OrthographicCamera();
    camera.setToOrtho(true,1080,1920);
}

@Override
public void render(float delta) {
    // TODO Auto-generated method stub
    Gdx.gl.glClearColor(1F, 1F, 1F, 1F);
    Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);



    camera.update();

    if(Gdx.input.isTouched()){
        game2=new Another(this);
        setScreen(game2);

    }

}



@Override
public void resize(int width, int height) {
    // TODO Auto-generated method stub

}

@Override
public void show() {
    // TODO Auto-generated method stub

}

@Override
public void hide() {
    // TODO Auto-generated method stub

}

@Override
public void pause() {
    // TODO Auto-generated method stub

}

@Override
public void resume() {
    // TODO Auto-generated method stub

}

@Override
public void dispose() {
    // TODO Auto-generated method stub

}

@Override
public void create() {
    // TODO Auto-generated method stub

}



}

そしてもう一つは

package com.me.mygdxgame;

import com.badlogic.gdx.Game;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Screen;
import com.badlogic.gdx.graphics.GL10;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.Texture.TextureFilter;
import com.badlogic.gdx.graphics.g2d.Sprite;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;

public class Another extends Game implements Screen{

OrthographicCamera cameraa;
SpriteBatch batch;
Sprite hello;
Texture thello;




private gameScreen game;

public Another(gameScreen game){
    this.game=game;
    cameraa=new OrthographicCamera();
    cameraa.setToOrtho(true,1080,1920);
    batch=new SpriteBatch();


    thello = new Texture(Gdx.files.internal("data/libgdx.png"));
    thello.setFilter(TextureFilter.Linear, TextureFilter.Linear);
    hello = new Sprite(thello);
    hello.flip(false, true);

}

@Override
public void render(float delta) {
    // TODO Auto-generated method stub
    Gdx.gl.glClearColor(0F, 0F, 1F, 1F);
    Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);


    cameraa.update();


    if(Gdx.input.isTouched()){


    }
}

@Override
public void resize(int width, int height) {
    // TODO Auto-generated method stub

}

@Override
public void show() {
    // TODO Auto-generated method stub
    Gdx.gl.glClearColor(0F, 0F, 1F, 1F);
    Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
    batch.setProjectionMatrix(cameraa.combined);
    cameraa.update();

    batch.begin();
    batch.draw(hello,0,0);
    batch.end();

}

@Override
public void hide() {
    // TODO Auto-generated method stub

}

@Override
public void pause() {
    // TODO Auto-generated method stub

}

@Override
public void resume() {
    // TODO Auto-generated method stub

}

@Override
public void dispose() {
    // TODO Auto-generated method stub

}

@Override
public void create() {
    // TODO Auto-generated method stub


}

}

cameraa や gamee など、かなり変わった名前を使用しました。これは、私が言ったように、このプロジェクト全体がテストであるためです。適切な名前を設定するのは面倒です

4

1 に答える 1

0

画面 (gameScreen と Another) で「extends Game」を削除し、implements Screen だけを残します。

次に、gameScreen でそのように setScreen(game2) を使用する代わりに。次のように使用します。

game.setScreen(game2) //「ゲーム」を追加。

これは、画面がゲームから拡張されないためですが、そのフィールドでゲームを取得できるため、そこから使用できます。

おまけとして: Another インスタンスを「game2」と呼ばないでください。これはゲームではないからです。また、クラスの名前の先頭に小文字を使用しないでください (gameScreen は GameScreen にする必要があります)。ただし、これは唯一の規則であり、それを行うかどうかはあなた次第です。

于 2013-10-09T20:28:11.503 に答える