2017-05-22 3 views
1

Ich habe Stunden versucht, dies zu lösen und werde verrückt, bitte werfen Sie einen Blick auf mein Problem.Actors Position ist falsch, wenn setFillParent wahr ist, in LibGDX

Bild veranschaulicht das Problem:

Image illustrating this

  • Wenn die exitButton ‚s setFillParent Funktion false eingestellt ist die Ergebnisse der rechten Seite des Bildes sind, wird der Button zentriert innerhalb der Container aber die Größe ist falsch.

  • Wenn die exitButton ‚s setFillParent Funktion true gesetzt, um die Ergebnisse die linke Seite des Bildes sind, ist die Taste Größe richtig aber die Position ist falsch.

Hier ist der Code:

Container container = new Container(exitButton); 

    container.fill(); 

    container.setRound(false); 

    container.setSize(buttonSize, buttonSize); 

    exitButton.setFillParent(true); 

    //exitButton.setFillParent(false); 

    container.setPosition(
      ((float)viewportWidth/7f) - (buttonSize/2f) 
      ,((float)viewportHeight*5f/6f) - (buttonSize/2f) 
    ); 
+0

was ist [diese] (https://stackoverflow.com/questions/43958162/having-problems-with-the-layout-widget-container-in-libgdx) Frage, auf der Suche ähnliche – Aryan

+0

Verwenden Sie "scale" anstelle von "resize" und aktivieren Sie transform für container. – Aryan

Antwort

0

Widgets entworfen werden von ihren Eltern so bemessen werden. setFillParent(true) ermöglicht es einem Widget, dies zu überschreiben und seine eigene Größe festzulegen (um der Größe des übergeordneten Elements zu entsprechen). Sie möchten dies niemals tun, es sei denn, es handelt sich um das Widget auf oberster Ebene einer Hierarchie, denn wenn ein Widget die Kontrolle über seine eigene Größe übernimmt, verliert das übergeordnete Element die Fähigkeit, es korrekt zu positionieren.

Warum die Schaltfläche größer als der Container gezeichnet wird, kann dies passieren, wenn die minWidth/minHeight des untergeordneten Elements größer als die übergeordneten ist. Angenommen, exitButton ist ein ImageButton oder nur ein Button, bedeutet dies, dass das Zeichen für sein Bild oder Hintergrund größer als buttonSize ist.

Der einfachste Weg ist, getMinWidth() und getMinHeight() zu überschreiben, um Null zurückzugeben. Zum Beispiel:

exitButton = new Button(skin, style){ 
    public float getMinWidth(){return 0;} 
    public float getMinHeight(){return 0;} 
}; 
Verwandte Themen