2015-03-02 118 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

相关问题