(初学者)在 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。
我正在努力完成一个非常简单的任务:如何使用面向对象的代码通过按下按钮正确地发送信息。
我有一个 "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。