码迷,mamicode.com
首页 > Windows程序 > 详细

Libgdx之Window Dialog 窗口和对话框

时间:2016-06-12 02:24:22      阅读:459      评论:0      收藏:0      [点我收藏+]

标签:

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() + "window width=" + window.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();
    }

技术分享

Libgdx之Window Dialog 窗口和对话框

标签:

原文地址:http://blog.csdn.net/zqiang_55/article/details/51622577

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!