User interface LibGDX-Scene2D:如何使用多个按钮制作hud?

User interface LibGDX-Scene2D:如何使用多个按钮制作hud?,user-interface,libgdx,scene2d,hud,User Interface,Libgdx,Scene2d,Hud,我在做一个无聊的游戏,但现在我不知道如何让HUD的听众。可以在hud的每个按钮中实例化InputListener()吗?我有20个按钮或演员可以触摸。只需对每个想要剪辑的演员使用addListener()方法即可。我曾使用此功能,但由于禁用按钮时表现更好,有时建议使用此功能 所以你需要做的就是 Button button; //creating button... button.addListener(new ClickListener(){ @Ove

我在做一个无聊的游戏,但现在我不知道如何让HUD的听众。可以在hud的每个按钮中实例化InputListener()吗?我有20个按钮或演员可以触摸。

只需对每个想要剪辑的演员使用
addListener()
方法即可。我曾使用此功能,但由于禁用按钮时表现更好,有时建议使用此功能

所以你需要做的就是

    Button button;

    //creating button...

    button.addListener(new ClickListener(){
        @Override
        public void clicked(InputEvent event, float x, float y)
        {
            //Do something
        }
    });
HUD舞台上的其他按钮/演员也是如此


您也可以在我询问过的许多监听器的性能的地方找到答案。

只需对每个您想要剪辑的参与者使用
addListener()
方法即可。我曾使用此功能,但由于禁用按钮时表现更好,有时建议使用此功能

所以你需要做的就是

    Button button;

    //creating button...

    button.addListener(new ClickListener(){
        @Override
        public void clicked(InputEvent event, float x, float y)
        {
            //Do something
        }
    });
HUD舞台上的其他按钮/演员也是如此


你也可以在我询问过许多监听器的性能的地方找到答案。

这里有一个scene2d按钮,它非常容易使用,我不明白问题是什么,或者为什么你担心每个按钮或UI对象上都有一个监听器,这对我来说似乎很合乎逻辑

button = new Button(buttonStyle);
    button.setPosition(x, y);
    button.addListener( new ClickListener() {
        @Override
        public void clicked(InputEvent event, float x, float y) {
            Gdx.app.log(TAG, "Button clicked");
        };
    });

这里有一个scene2d按钮,它非常容易使用,我不明白问题是什么,或者为什么你担心每个按钮或UI对象上都有一个监听器,这对我来说似乎很合乎逻辑

button = new Button(buttonStyle);
    button.setPosition(x, y);
    button.addListener( new ClickListener() {
        @Override
        public void clicked(InputEvent event, float x, float y) {
            Gdx.app.log(TAG, "Button clicked");
        };
    });

我是说,这是唯一的选择?因为我需要从InputListener类的触地方法访问“button”的变量和函数(我知道我可以访问,但我需要传递参数,或者创建一个扩展InputListener的内部类,等等)。这就像很多代码一样,想象一下20个按钮实例化了扩展的InputListener类,每个类都有自己的代码,只为一个按钮。我真的不理解你的问题。听起来你的设置很复杂。监听器只需要在
触地
中调用一个方法。您也可以为每个按钮分配相同的侦听器,并对所有按钮进行
触地
方法检查
事件.getListGenerator()
,以决定调用哪个方法。如果您希望按钮的行为更像操作系统的按钮(通过拖动按钮并释放按钮来取消按下),那么请使用ChangeListener而不是InputListener,并使用
changed
而不是
触地
来响应它。我的意思是,这是唯一的选项吗?因为我需要从InputListener类的触地方法访问“button”的变量和函数(我知道我可以访问,但我需要传递参数,或者创建一个扩展InputListener的内部类,等等)。这就像很多代码一样,想象一下20个按钮实例化了扩展的InputListener类,每个类都有自己的代码,只为一个按钮。我真的不理解你的问题。听起来你的设置很复杂。监听器只需要在
触地
中调用一个方法。您也可以为每个按钮分配相同的侦听器,并对所有按钮进行
触地
方法检查
事件.getListGenerator()
,以决定调用哪个方法。如果您希望按钮的行为更像操作系统的按钮(通过拖动按钮并释放按钮来取消按下),则使用ChangeListener而不是InputListener,并使用
changed
而不是
触地
来响应它。