그래서 나는이 같은 sceneu2.ui 테이블이 나타나고 페이드 아웃 다음 scrollpane
내부Libgdx scene2d 배우 무작위로
+--------------------------------------+
|+---------+ +------------+ +---------+|
|| Table 1 | | ScrollPane | | Table 2 ||
|+---------+ +------------+ +---------+|
+--------------------------------------+
| My Actor |
+--------------------------------------+
다른 table
입니다. 인클로저는 table
입니다. Table 1
, Table 2
및 table
안에 scrollpane
의 행 수가 같습니다.
My 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
문서가 끔찍하기 때문입니다. 처음에는 마우스 오버 상태를 지원하지 않는다고 생각했지만 실제로 사용하려고 할 때 편집자 자동 완성 기능을 사용하면 실제로 마우스 오버 드로어 블을 설정할 수있는 '오버'필드가 있음을 알 수있었습니다. 그러나 이것은 아직도 왜 작동하지 않는지에 대한 대답을하지 못합니다. – innocenat
이 문제를 해결할 수 있었습니까 ?? – Tiarsoft