当前位置: 首页 > 面试题库 >

如何在Libgdx中创建按钮?

郑嘉年
2023-03-14
问题内容

我想创建一个在用户将鼠标悬停或单击时会更改的按钮。我创建了以下变量

Button buttonPlay = new Button();

我不知道该怎么办,如何加载图像?如何将文字写入按钮?如何实现事件/效果(悬停,单击)?

如果有人可以为按钮编写一些示例代码,那将非常有帮助。


问题答案:

按钮只是libgdx中的一个actor。要渲染一个演员,您可以使用一个包含屏幕上所有演员的舞台,渲染它们并对其进行更新。我假设您想要一个带有文本的按钮,因此您应该使用TextButton类并将其添加到舞台上。一个TextButton接受一个字符串进行渲染,并使用一个ButtonStyle,在这种情况下为TextButtonStyle,它基本上是一个类,其中包含有关按钮的所有信息(字体,不按下时可绘制,按下时可绘制等)。

   public class ButtonExample extends Game{

    Stage stage;
    TextButton button;
    TextButtonStyle textButtonStyle;
    BitmapFont font;
    Skin skin;
    TextureAtlas buttonAtlas;

    @Override
    public void create() {      
        stage = new Stage();
        Gdx.input.setInputProcessor(stage);
        font = new BitmapFont();
        skin = new Skin();
        buttonAtlas = new TextureAtlas(Gdx.files.internal("buttons/buttons.pack"));
        skin.addRegions(buttonAtlas);
        textButtonStyle = new TextButtonStyle();
        textButtonStyle.font = font;
        textButtonStyle.up = skin.getDrawable("up-button");
        textButtonStyle.down = skin.getDrawable("down-button");
        textButtonStyle.checked = skin.getDrawable("checked-button");
        button = new TextButton("Button1", textButtonStyle);
        stage.addActor(button);
    }

    @Override
    public void render() {      
        super.render();
        stage.draw();
    }
}

那么这里发生了什么?我在“
buttons.pack”中创建一个带有所有按钮纹理的舞台,一个字体和一个textureatlas。然后,我初始化一个空的TextButtonStyle,并为上,下和选中状态添加字体和纹理。font,up,down和checked都是Drawable类型的静态变量,因此您可以真正将其传递给任何类型的Drawable(纹理,9-patch等)。然后只需将按钮添加到舞台即可。

现在,为了在实际单击按钮时执行某些操作,您必须向按钮添加一个侦听器,即ChangeListener。

    button.addListener(new ChangeListener() {
        @Override
        public void changed (ChangeEvent event, Actor actor) {
            System.out.println("Button Pressed");
        }
    });

当然,除了将按钮直接添加到舞台上之外,您应该将其添加到表格中并将表格添加到舞台上,但是我不想让这篇文章过于混乱。这是关于libgdx中表的很好的教程。



 类似资料:
  • 我正在开发一个flappy bird克隆,我真的被我想要创建的按钮卡住了。对不起,我知道这是一个基本问题,但我是初学者,我真的需要你的帮助。所以,游戏已经基本完成了,但是我想做一个按钮来做同样的事情,而不是触摸整个屏幕让一只鸟跳起来。这是我的InPurthandler课程: 我在GameScreen类中创建了一个舞台和一个演员(按钮)(它不工作),并在屏幕上显示,但我不知道下一步该怎么做。再一次,

  • 我正在用libgdx制作一个自上而下的迷宫游戏,我使用extendViewport来渲染游戏相机。我有点困惑,我将如何着手创建一个小地图。我应该为小地图创建一个额外的视口和照相机吗?我对整个视口/摄影机还是新手。谢谢

  • 问题内容: 我想制作一个圆形的大拇指和大拇指向下的按钮。 我应该使用ImageView还是Button作为超类? 我将如何在Swift中做到这一点? 问题答案: 这是一个圆形按钮示例: 斯威夫特3: Swift 2.x:

  • 问题内容: 我想使用CSS在html中创建一个切换按钮。我想要它,以便当您单击它时,它保持推入状态,而不是再次单击时它弹出。 如果没有办法仅使用CSS。有没有办法使用jQuery? 问题答案: 良好的语义方式是使用复选框,然后如果未选中,则以不同的方式设置其样式。但是没有好的方法可以做到这一点。您必须添加额外的跨度,额外的div,并且要真正看起来不错,请添加一些javascript。 因此最好的解

  • 我几乎完成了Android(混合应用程序)的第一个游戏,我正在考虑为它创建一个费率按钮。我试着在网上搜索,但是大多数评论都是关于Java代码的,而我却一无所知。假设我在HTML文件中创建了一个按钮(Rate)。大家可以给出一个解决方案,让它作为一个常规的速率按钮运行吗?

  • 问题内容: 我创建了一个框架,然后创建了一个画布。 接下来,我要在画布上添加一个按钮。 但是,当我打包按钮时,我看不到画布! 这是我尝试过的: 问题答案: Tkinter管理器会尝试将父窗口小部件的大小调整为正确的大小,以包含其子窗口小部件,并且默认情况下不会更大。画布就在其中- 但它与按钮的尺寸完全相同,因此是不可见的。 如果要在画布上放置小部件 而不 导致画布动态调整大小,则需要以下功能: 这