2015-03-02 114 views
1

我正在嘗試使用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 

} 

} 

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

+0

什麼是錯誤? – Zaid 2017-05-27 09:21:51

回答

1

你可以看看這些鏈接:

  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 
+0

爲什麼? downvote我的答案,我認爲它應該解釋downvote,1因爲它假設它,downvote,有一個解決方案是正確的,可以公佈你的答案,如果不是這樣,可以說這就是我的答案是錯了,謝謝你的閱讀 – 2015-03-02 22:50:09

相關問題