所以我有一个像这样的sceneu2.ui表:
+--------------------------------------+
|+---------+ +------------+ +---------+|
|| Table 1 | | ScrollPane | | Table 2 ||
|+---------+ +------------+ +---------+|
+--------------------------------------+
| My Actor |
+--------------------------------------+
scrollpane
内的另一个table
。附件也是table
。 Table 1
内的Table 2
,table
和scrollpane
具有相同的行数。
My Actor
是一个简单的图像按钮actor,也支持鼠标悬停。
问题在于,My Actor
最初没有出现(但是它的边界存在 - 由表调试行检查)但是当我在scrollpane
中滚动某些内容(使用鼠标)时,它显示为2秒,然后开始逐渐消失。 (预期结果应始终显示)
我做错了什么?
My Actor
类:
public class GameButton extends Actor {
public static abstract class Listener {
public abstract void onClick();
}
final Texture[] current;
final Listener listener;
boolean disabled;
int state = 0;
public GameButton(Texture[] current, final Listener listener) {
this.current = current;
setWidth(current[0].getWidth());
setHeight(current[0].getHeight());
this.listener = listener;
disabled = false;
this.addListener(new InputListener() {
boolean just_up = false;
@Override
public boolean touchDown (InputEvent event, float x, float y, int pointer, int button) {
state = 2;
return true;
}
@Override
public void touchUp (InputEvent event, float x, float y, int pointer, int button) {
state = 0;
if (hit(x, y, false) != null) {
just_up = true;
state = 1;
if (listener != null && !disabled)
listener.onClick();
}
}
@Override
public void enter (InputEvent event, float x, float y, int pointer, Actor fromActor) {
if (state == 0)
state = 1;
}
@Override
public void exit (InputEvent event, float x, float y, int pointer, Actor toActor) {
if (!just_up)
state = 0;
just_up = false;
}
});
}
public void setDisabled(boolean disabled) {
this.disabled = disabled;
}
@Override
public void draw(SpriteBatch batch, float _) {
super.draw(batch, _);
batch.draw(current[disabled ? 0 : state], getX(), getY(), getWidth(), getHeight());
}
}
用于将其添加到表中的代码:
btnBack = new GameButton(Assets.btnBack, 0, 0, new GameButton.Listener() {
@Override
public void onClick() {
/* removed */
}
});
add(btnBack).colspan(3).right().bottom().height(128);
答案 0 :(得分:5)
我意识到这个问题是2岁,但我也有这个问题,所以我想发布我的解决方案。对我来说,这只是使用
将滚动条淡入设置为false的情况ScrollPane scroll = new ScrollPane();
scroll.setFadeScrollBars(false);
答案 1 :(得分:4)
添加到actor setColor(1,1,1,1)
中的draw方法@Override
public void draw(SpriteBatch batch, float _) {
batch.setColor(1,1,1,1);
super.draw(batch, _);
batch.draw(current[disabled ? 0 : state], getX(), getY(), getWidth(), getHeight());
}
答案 2 :(得分:0)
ScrollPane的默认“空白”皮肤/行为会进行一些淡入淡出。我不清楚为什么,但它可以导致屏幕上的其他东西也消失。我在背景图片上遇到了同样的问题。我怀疑如果你为ScrollPane定义自己的皮肤,你会看到你的按钮出现。