所以我有一个sceneu2.ui表是这样的:Libgdx scene2d演员似乎淡出随机
+--------------------------------------+
|+---------+ +------------+ +---------+|
|| 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);
看起来你正在重新创建一个libgdx按钮。任何你不使用它的理由? – Jyro117
因为它的文档很烂。我认为它一开始并不支持mouseover状态,但是当我真正尝试使用它时,我的编辑器自动完成功能告诉我它实际上有'over'字段可以设置mouseover drawable。但是这仍然不能回答为什么这不起作用。 – innocenat
你能解决这个问题吗? – Tiarsoft