Libgdx之Window Dialog 窗口和对话框
Libgdx提供了窗口类(Window)让开发者对用户进行提示,或者进行一些输入操作。
Window可以点击标题进行拖动,也可以设置为Modal模式。preferred size是由标题文字和里面装载的Actor共同决定的,当调用pack方法时会重新计算大小。
Dialog extends Window, Dialog是一个模式窗口(Modal Window),提供了content table和button table,,很方便的往Dialog找那个添加文字。当点击button时,会调用result方法,而且Dialog会自动消失
下面是代码时间,大家自己运行一下代码就可以看到效果:
Window window; Dialog dialog; TextButton tbOk, tbCancel; Stage stage; Skin skin; @Override public void create() { stage = new Stage(); Gdx.input.setInputProcessor(stage); skin = new Skin(Gdx.files.internal("uiskin.json")); window = new Window("WindowTest", skin); // 默认文字是在左边显示,需要手动设置居中 window.getTitleLabel().setAlignment(Align.center); // 默认window的位置是在左下角,需重新设置 window.setX(Gdx.graphics.getWidth() / 2 - window.getWidth() /2 ); window.setY(Gdx.graphics.getHeight() / 2 - window.getHeight() / 2); // 拖动TitleLabel,window会移动 window.setMovable(false); tbOk = new TextButton("OK", skin); tbCancel = new TextButton("CANCEL", skin); tbOk.setSize(tbCancel.getPrefWidth(), tbCancel.getPrefHeight()); tbCancel.addListener(new ClickListener() { @Override public void clicked(InputEvent event, float x, float y) { window.setVisible(false); } }); tbOk.addListener(new ClickListener() { @Override public void clicked(InputEvent event, float x, float y) { Gdx.app.log("TAG", "dialog ok button is clicked"); } }); tbOk.setX(window.getPrefWidth() / 2 - tbOk.getWidth() / 2 - 10); tbOk.setY(10); tbCancel.setX(window.getWidth() / 2 + 10); tbCancel.setY(10); // 这个地方用addActor方法,不能使用add方法,后面将讲解Table的时候会涉及到 window.addActor(tbOk); window.addActor(tbCancel); Gdx.app.log("TAG", "window preWidth=" + window.getPrefWidth() + "windowhljs-preprocessor">.getWidth()); // window.pack(); stage.addActor(window); dialog = new Dialog("DialogTest", skin, "dialog"); dialog.getTitleLabel().setAlignment(Align.center); // 这样无法获得OK事件 // 往Dialog里面添加文字信息(Label形式) dialog.text("This is Test information"); // 往Dialog里面添加按钮(Button形式),点击按钮后Dialog自动消失 // dialog.button("OK", true).addListener(new ClickListener() { // // @Override // public void clicked(InputEvent event, float x, float y) { // Gdx.app.log("TAG", "dialog ok button is clicked"); // } // // }); // 这个方法和上面方法的效果一样 dialog.button(tbOk); dialog.setMovable(false); stage.addActor(dialog); } @Override public void render() { Gdx.gl.glClearColor(0.39f, 0.58f, 0.92f, 1.0f); Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); stage.act(); stage.draw(); } @Override public void dispose() { stage.dispose(); skin.dispose(); }温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/63034.html