【发布时间】:2014-07-01 16:08:41
【问题描述】:
我有一个从 0 到 100 的浮点值,我想注册一个长按并逐步更新 Label,这样标签的文本就会每 0.25 秒更新一次。现在我正在使用一个定制的标签,它有一种方法来更新显示的文本。
我尝试像这样使用 touchDown:
while (Gdx.input.isButtonPressed(Buttons.LEFT)) {
double currentValue = Double.parseDouble(Button.getText()
.toString());
if ((int) currentValue != 0)
currentValue--;
Button.updateText(Double.toString(currentValue));
}
但这似乎不起作用,如何在单击按钮时更新标签?
编辑:ClickListener 的大部分代码:
@Override
public void enter(InputEvent event, float x, float y, int pointer,
Actor fromActor) {
super.enter(event, x, y, pointer, fromActor);
TextButtonStyle style = ButtonLower.getStyle();
style.font = red;
ButtonLower.setStyle(style);
}
@Override
public void exit(InputEvent event, float x, float y, int pointer,
Actor toActor) {
super.exit(event, x, y, pointer, toActor);
TextButtonStyle style = ButtonLower.getStyle();
style.font = white;
ButtonLower.setStyle(style);
}
@Override
public void clicked(InputEvent event, float x, float y) {
super.clicked(event, x, y);
System.out.println(event.toString());
double currentValue = Double.parseDouble(Button.getText()
.toString());
if ((int) currentValue != 0)
currentValue--;
Button.updateText(Double.toString(currentValue));
}
@Override
public boolean touchDown(InputEvent event, float x, float y,
int pointer, int button) {
if (Gdx.input.isButtonPressed(Buttons.LEFT)) {
double currentValue = Double.parseDouble(Button.getText()
.toString());
if ((int) currentValue != 0)
currentValue--;
Button.updateText(Double.toString(currentValue));
}
return super.touchDown(event, x, y, pointer, button);
}
【问题讨论】:
-
你的程序的输出是什么?有错误信息吗?
-
目前它只是冻结,即使我正在释放鼠标左键。它也不会更新标签。
-
你试过用 if 代替 while 吗?
-
我需要在按下按钮时更新它,不确定是否可以帮助我。代码写在 touchDown 方法中。
-
使用if不起作用,它只是取下一个,所以如果例如设置为100,然后按一个按钮使其下降,它会在触摸下降时取下,并且在修饰时,总共会减少 2 个。