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

ответ

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, имеет правильное решение и может опубликовать ваш ответ, и если не так, могу сказать, что это то, что мой ответ неправильно, спасибо за чтение –

Смежные вопросы