簡體   English   中英

如何在LibGDX中將一個屏幕移動到另一個屏幕?

[英]How to Move one Screen to Another Screen in LibGDX.?

我正在嘗試使用LIBGDX游戲引擎將一個屏幕移動到另一個屏幕。 我的第一個屏幕上有一個按鈕,當我單擊此按鈕屏幕時,我想將其更改。

package com.mygdx.game;

import com.badlogic.gdx.Game;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.InputProcessor;
import com.badlogic.gdx.Screen;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.graphics.g2d.Sprite;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
import com.badlogic.gdx.scenes.scene2d.InputEvent;
import com.badlogic.gdx.scenes.scene2d.Stage;
import com.badlogic.gdx.scenes.scene2d.ui.TextButton;
import com.badlogic.gdx.scenes.scene2d.ui.TextButton.TextButtonStyle;
import com.badlogic.gdx.scenes.scene2d.utils.ClickListener;
import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable;


public class MyGdxGame extends Game implements Screen,InputProcessor{
Stage stage;
TextureRegion rgn_reply;
TextButton button_reply;
TextButtonStyle reply_style;
BitmapFont font;

Game game;
Screen1 screen1;
MyGdxGame h;
float y_touched;
float x_touched;
public MyGdxGame()
{

}
public MyGdxGame(Game _g)
{
    this.game=_g;
}
@Override
public void create() {
    // TODO Auto-generated method stub

    font = new BitmapFont();


    stage = new Stage();
    Sprite sp_button =  new Sprite(new TextureRegion(new Texture("whats-app.png")));
    Sprite sp_button_active =  new Sprite(new TextureRegion(new Texture("whats-app_active.png")));
    reply_style = new TextButtonStyle(new TextureRegionDrawable(sp_button),new TextureRegionDrawable(sp_button_active),null,font);
    button_reply = new TextButton("", reply_style);
    button_reply.setPosition(55,55);
    button_reply.setSize(100, 100);
    stage.addActor(button_reply);
    Gdx.input.setInputProcessor(stage);
    button_reply.addListener(new ClickListener() {
           @Override
           public void clicked(InputEvent event, float x, float y) {
               System.out.println("button clicked");
               game.setScreen(new Screen1());
             };
       });

}
 @Override
    public void render() {
        Gdx.gl.glClearColor(0.18f,0.21f,0.27f, 1);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
        super.render();
        stage.draw();
    }
@Override
public boolean keyDown(int keycode) {
    // TODO Auto-generated method stub
    return false;
}
@Override
public boolean keyUp(int keycode) {
    // TODO Auto-generated method stub
    return false;
}
@Override
public boolean keyTyped(char character) {
    // TODO Auto-generated method stub
    return false;
}
@Override
public boolean touchDown(int screenX, int screenY, int pointer, int button) {
    // TODO Auto-generated method stub

    return false;
}
@Override
public boolean touchUp(int screenX, int screenY, int pointer, int button) {
    // TODO Auto-generated method stub
    return false;
}
@Override
public boolean touchDragged(int screenX, int screenY, int pointer) {
    // TODO Auto-generated method stub
    return false;
}
@Override
public boolean mouseMoved(int screenX, int screenY) {
    // TODO Auto-generated method stub

    return false;
}
@Override
public boolean scrolled(int amount) {
    // TODO Auto-generated method stub
    return false;
}
@Override
public void render(float delta) {
    // TODO Auto-generated method stub

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

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

}
}

這是我的第二個屏幕代碼,該屏幕上沒有任何內容。

package com.mygdx.game;

import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Screen;
import com.badlogic.gdx.graphics.GL20;

public class Screen1 implements Screen{

MyGdxGame h;

public Screen1(MyGdxGame _h)
{
    this.h=_h;
}

public Screen1()
{

}

@Override
public void render(float delta) {
    // TODO Auto-generated method stub
    Gdx.gl.glClearColor(0.18f,0.21f,0.27f, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
}

@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

}

}

這不能正常工作。 不顯示第二個屏幕。

您可以查看以下鏈接:

  1. https://code.google.com/p/libgdx-users/wiki/ScreenAndGameClasses

  2. https://github.com/libgdx/libgdx/wiki/Extending-the-simple-game

game.setScreen(new Screen1(YourGame));

    //Other Code

    @Override
    public void clicked(InputEvent event, float x, float y) {
           System.out.println("button clicked");
           game.setScreen(new Screen1(game));
    };

    //Other Code

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM