Aus meiner Sicht kann ein ScrollPane mehrere Widgets hinzufügen, indem eine Tabelle als ScrollPane-Widget verwendet wird (so wird es in den ScrollPane-Tests innerhalb des libGDX-Repo durchgeführt).libGDX ScrollPane mit WidgetGroup anstelle von Table als ScrollPane Widget?
Ich möchte etwas Ähnliches erreichen, möchte aber die absolute Positionierung vieler Akteure innerhalb des ScrollPane-Widgets im Gegensatz zur Tabellenpositionierung, die durch Verwendung einer Tabelle als ScrollPane-Widget bereitgestellt wird.
Ich endete mit diesem Code, der nicht funktioniert, aber nach dem libGDX javadoc sollte es und ich weiß nicht, warum es nicht funktioniert!
stage = getStage();
// Scroll pane outer container
Container<ScrollPane> container = new Container<ScrollPane>();
container.setSize(Game.getWidth(), Game.getHeight());
// Scroll pane inner container
WidgetGroup widgetGroup = new WidgetGroup();
widgetGroup.setFillParent(true);
widgetGroup.addActor(new Image(MAP_TEXTURE_ATLAS.findRegion("map")));
// Scroll pane
ScrollPane scrollPane = new ScrollPane(widgetGroup);
container.setActor(scrollPane);
stage.addActor(container);
Nichts wird auf dem Bildschirm überhaupt angezeigt;
Es ist jedoch mit dem folgenden Code funktioniert (was natürlich nicht das, was ich will als ScrollPane-Widget ist ein Container, die nur einen Schauspieler haben haben können)
// Scroll pane outer container
Container<ScrollPane> container = new Container<ScrollPane>();
container.setSize(Match3.getWidth(), Match3.getHeight());
// Scroll pane inner container
Container container2 = new Container();
container2.setBackground(new TextureRegionDrawable(MAP_TEXTURE_ATLAS.findRegion("map")));
// Scroll pane
ScrollPane scrollPane = new ScrollPane(container2);
container.setActor(scrollPane);
stage.addActor(container);
Gibt es eine Möglichkeit, mit verwenden WidgetGroup ScrollPane, oder wie ich die von mir benötigte Funktionalität erreichen kann.
Dank
ALTERNATIVE UMSETZUNG DER ANTWORT AKZEPTIERT
Nachdem die akzeptierte Antwort Lesen ich beschlossen, meine eigene Klasse zu erstellen, die Umsetzung ist unten;
// Scroll pane outer container
Container<ScrollPane> container = new Container<ScrollPane>();
container.setSize(Match3.getWidth(), Match3.getHeight());
class ScrollWidget extends WidgetGroup {
private float prefHeight;
private float prefWidth;
public ScrollWidget(Image image) {
prefHeight = image.getHeight();
prefWidth = image.getWidth();
addActor(image);
}
@Override
public float getPrefHeight() {
return prefHeight;
}
@Override
public float getPrefWidth() {
return prefWidth;
}
}
ScrollWidget scrollWidget = new ScrollWidget(
new Image(MAP_TEXTURE_ATLAS.findRegion("map"))
);
// Scroll pane
ScrollPane scrollPane = new ScrollPane(scrollWidget);
scrollPane.setOverscroll(false, false);
scrollPane.layout();
scrollPane.updateVisualScroll();
scrollPane.setScrollY(scrollPane.getMaxY());
container.setActor(scrollPane);
stage.addActor(container);
Dank, das war das Problem! Ich habe meine Frage so bearbeitet, dass sie eine ähnliche Lösung enthält, wie Sie sie gelöst haben. – GradeRetro