(初学者)在 libGDX 中发送带有事件的信息

(beginner) Sending information with event in libGDX

我正在努力完成一个非常简单的任务:如何使用面向对象的代码通过按下按钮正确地发送信息。

我有一个 "ColorWindow"† 拿着一堆 "ColorButton"†† 物体。我需要按下按钮来发送有关按下按钮的颜色的信息。我 认为 此处使用的正确技术是触发某种包含信息或指向触发它的 ColorButton 的自定义事件。我只是不确定如何创建自定义事件(或如何使我的其余代码接收它),甚至不确定这是否是我应该做的。

抱歉问了这么基本的问题,我对 [edit:Java] 和 libGDX 还很陌生。我一直在阅读大量文档并自行搜索以尝试学习,但在这一点上我真的需要向我展示正确的方向。

A table 扩展 Scene2D Window

†† 扩展包含颜色属性的 Scene2D 按钮的小部件

编辑:以下似乎工作正常。

public class ExampleButton extends Button
{
    public String exampleString

    public IconButton(Skin skin, String exampleString)
    {
        super(skin);
        this.exampleString = exampleString;
    }
}

        //add this where needed
        addListener(new ClickListener()
        {
            @Override
            public boolean clicked(InputEvent event, float x, float y)
            {
                //grabs a reference to the button from the event it fired
                Actor target = event.getTarget();
                //cast Actor into ExampleButton to access its contents
                ExampleButton btn = (ExampleButton)target;
                System.out.println(btn.exampleString);
                return true
            }
        });

Scene2D 将自动触发包含对启动事件的按钮的引用的事件。您需要设置 EventListener 以对事件做出反应,如下所示:

首先,确保您有对各种按钮的成员引用。然后您可以在 EventListener 中引用它们。

private ColorButton colorButton0;
private ColorButton colorButton1;
//etc.

private EventListener colorButtonListener = new EventListener(){
    public boolean handle (Event event){
        Actor actor = event.getTarget();
        if (actor == colorButton0)
            //do something
        else if (actor == colorButton1)
            //do something
        else
            return false;
        return true;
    }
}

像这样将此侦听器分配给每个 ColorButton:

colorButton1.addListener(colorButtonListener);

顺便说一句,Java和JavaScript是两种完全不同的语言,libgdx只使用了Java。