对话框类有点直觉,无需仔细研究。
这就是为什么我提供一个小的工作示例:
import com.badlogic.gdx.ApplicationAdapter;import com.badlogic.gdx.Gdx;import com.badlogic.gdx.graphics.GL20;import com.badlogic.gdx.scenes.scene2d.Stage;import com.badlogic.gdx.scenes.scene2d.ui.Dialog;import com.badlogic.gdx.scenes.scene2d.ui.Skin;import com.badlogic.gdx.utils.Timer;import com.badlogic.gdx.utils.Timer.Task;public class TestGame extends ApplicationAdapter{ Dialog endDialog; Skin skin; Stage stage; @Override public void create() { skin = new Skin(Gdx.files.internal("uiskin.json")); stage = new Stage(); Gdx.input.setInputProcessor(stage); endDialog = new Dialog("End Game", skin) { protected void result(Object object) { System.out.println("Option: " + object); Timer.schedule(new Task() { @Override public void run() { endDialog.show(stage); } }, 1); }; }; endDialog.button("Option 1", 1L); endDialog.button("Option 2", 2L); Timer.schedule(new Task() { @Override public void run() { endDialog.show(stage); } }, 1); } @Override public void render() { Gdx.gl.glClearColor(1, 0, 0, 1); Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); stage.act(); stage.draw(); } @Override public void dispose() { stage.dispose(); }}每次单击“对话框”选项(选项1或选项2),结果对象都会打印在system.out(此处1L或2L,可以是任何对象)上,并在1秒后再次显示对话框。
uiskin来自libgdx测试。
为了使其更适合您的需求,您可以将结果方法更改为:
protected void result(Object object){ if (object.equals(1L)) { gameScreen.setIntLives(3); gameScreen.setIntScore(0); System.out.println("Button Pressed"); } else { // Goto main menut }};并添加如下所示的按钮:
endDialog.button("Retry", 1L);endDialog.button("Main Menu", 2L);请注意,Dialog类仅实例化一次。(所以我的评论不正确)
只是为了让您了解如何使用它:
由于可以使用任何对象,因此可以使用反射:
try{ endDialog.button("doX", ClassReflection.getDeclaredMethod(this.getClass(), "doX")); endDialog.button("doY", ClassReflection.getDeclaredMethod(this.getClass(), "doY"));} catch (ReflectionException e){ // TODO Auto-generated catch block e.printStackTrace();}结果方法如下所示:
protected void result(Object object){ try { ((Method) object).invoke(TestGame.this); } catch (ReflectionException e) { // TODO Auto-generated catch block e.printStackTrace(); }};现在,您只需要实现以下方法:
public void doX(){ System.out.println("doX");}public void doY(){ System.out.println("doY");}只是给您一些想法。



