LibGDX - 如何在 LibGDX 中结合来自两个点击侦听器的 Clicked() 方法,类似于 Android?
LibGDX - How to combine Clicked() method from two click listeners in LibGDX similar to Android?
我想将以下两个按钮(button1 和 button2)组合成一个 clicked() 方法
这类似于 Android 使用 v.getId().
在LibGDX中:
button1.addListener(new ClickListener(){
@Override
public void clicked(InputEvent event, float x, float y){
button1.setText("It was the first button.");
}
});
button2.addListener(new ClickListener(){
@Override
public void clicked(InputEvent event, float x, float y){
button2.setText("It was the second button.");
}
});
在Android中:
View.OnClickListener action = new View.OnClickListener() {
public void onClick(View v) {
switch(v.getId()) {
case R.id.button1:
// It was the first button.
break;
case R.id.button2:
// It was the second button.
break;
}
}
}
感谢回复。
我认为拥有两个 ClickListener 更容易,但您可以将侦听器添加到包含按钮(或舞台或按钮所在的任何对象)的视图中,并在 clicked() 方法中检查哪个按钮 (x, y) 坐标是这样的:
new ClickListener() {
@Override
public void clicked(InputEvent event, float x, float y) {
if (x > button1.x && x < button1.x + button1.width
&& y > button1.y && y < button1.y+button1.height) {
// button 1 was pressed
}
// similar for button2
}
您可以获取角色(在本例中为按钮),然后执行 if-else 语句以获得类似的行为。可以将此点击侦听器分配给您的每个按钮。如果您这样做时没有将按钮存储在成员变量中,那么您需要先声明按钮并将它们设为最终按钮。
ClickListener clickListener = new ClickListener (){
public void clicked(InputEvent event, float x, float y){
Actor actor = event.getListenerActor();
if (actor == button1) doButton1Action();
else if (actor == button2) doButton2Action();
else if (actor == button3) doButton3Action();
}
}
你也可以用改变监听器来做,而且稍微简单一些。
ChangeListener changeListener = new ChangeListener (){
public void changed (ChangeEvent event, Actor actor) {
if (actor == button1) doButton1Action();
else if (actor == button2) doButton2Action();
else if (actor == button3) doButton3Action();
}
}
我想将以下两个按钮(button1 和 button2)组合成一个 clicked() 方法 这类似于 Android 使用 v.getId().
在LibGDX中:
button1.addListener(new ClickListener(){
@Override
public void clicked(InputEvent event, float x, float y){
button1.setText("It was the first button.");
}
});
button2.addListener(new ClickListener(){
@Override
public void clicked(InputEvent event, float x, float y){
button2.setText("It was the second button.");
}
});
在Android中:
View.OnClickListener action = new View.OnClickListener() {
public void onClick(View v) {
switch(v.getId()) {
case R.id.button1:
// It was the first button.
break;
case R.id.button2:
// It was the second button.
break;
}
}
}
感谢回复。
我认为拥有两个 ClickListener 更容易,但您可以将侦听器添加到包含按钮(或舞台或按钮所在的任何对象)的视图中,并在 clicked() 方法中检查哪个按钮 (x, y) 坐标是这样的:
new ClickListener() {
@Override
public void clicked(InputEvent event, float x, float y) {
if (x > button1.x && x < button1.x + button1.width
&& y > button1.y && y < button1.y+button1.height) {
// button 1 was pressed
}
// similar for button2
}
您可以获取角色(在本例中为按钮),然后执行 if-else 语句以获得类似的行为。可以将此点击侦听器分配给您的每个按钮。如果您这样做时没有将按钮存储在成员变量中,那么您需要先声明按钮并将它们设为最终按钮。
ClickListener clickListener = new ClickListener (){
public void clicked(InputEvent event, float x, float y){
Actor actor = event.getListenerActor();
if (actor == button1) doButton1Action();
else if (actor == button2) doButton2Action();
else if (actor == button3) doButton3Action();
}
}
你也可以用改变监听器来做,而且稍微简单一些。
ChangeListener changeListener = new ChangeListener (){
public void changed (ChangeEvent event, Actor actor) {
if (actor == button1) doButton1Action();
else if (actor == button2) doButton2Action();
else if (actor == button3) doButton3Action();
}
}