2017-04-24 2 views
0

Je ne parviens pas à centrer un curseur mis à l'échelle dans une cellule de table Scene2d. Le résultat ressemble à ceci. scaled slider is off center Le code qui produit ceci ressemble à ceci.LibGDX, Scene2d - Mise à l'échelle de l'élément mis à l'échelle dans le tableau

table = new Table(); 
    table.align(Align.center | Align.top); 
    add = new TextButton("+1", skin); 
    remove = new TextButton(" -1", skin); 
    add.getLabel().setFontScale(2.0f); 
    remove.getLabel().setFontScale(2.0f); 


    slider = new Slider(1, 40, 1, false, skin); 
    slider.setValue(1); 
    Container<Slider> sliderContainer = new Container<Slider>(slider); 
    sliderContainer.setTransform(true); 
    sliderContainer.setScale(2); 

    table.setWidth(USER_SCREEN_SIZE_WIDTH); 
    table.add(remove).pad(BUTTON_PADDING); 
    table.add(sliderContainer).width(slider.getWidth() * 2); 
    table.add(add).pad(BUTTON_PADDING); 

    table.pack(); 
    table.setPosition(USER_SCREEN_SIZE_WIDTH/2-bookShoppingTable.getWidth()/2, 
     bookShoppingTable.getHeight()+BOTTOM_TABLE_OFFSET); 

J'ai essayé les solutions suivantes:

sliderContainer.setOrigin(sliderContainer.getWidth()/2, 
    sliderContainer.getHeight()/2); 

et

table.add(sliderContainer).width(slider.getWidth() * 2).center(); 

mais ils ne changeait rien.

Répondre

0

Veuillez vérifier, j'ai essayé de mettre en œuvre votre exigence.

public class TestGame extends ApplicationAdapter{ 

    OrthographicCamera camera; 
    Stage stage; 

    @Override 
    public void create() { 

     camera = new OrthographicCamera(); 
     ExtendViewport extendViewport = new ExtendViewport(400, 640, camera); 

     stage = new Stage(extendViewport); 

     Image image = new Image(new TextureRegionDrawable(new TextureRegion(new Texture("badlogic.jpg")))); 
     image.setSize(720, 480); 

     stage.setDebugAll(true); 

     Skin skin=new Skin(Gdx.files.internal("skin/uiskin.json")); 

     Table table=new Table(); 
     table.setFillParent(true); 
     stage.addActor(table); 

     Slider slider = new Slider(1, 40, 1, false, skin); 
     slider.setValue(1); 
     Container<Slider> sliderContainer = new Container<Slider>(slider); 
     sliderContainer.setTransform(true); 

     sliderContainer.setOrigin(slider.getWidth()/2,slider.getHeight()/2); 
     sliderContainer.setSize(slider.getWidth(),slider.getHeight()); 
     sliderContainer.setScale(2); 

     TextButton textButton=new TextButton("+1",skin); 
     TextButton textButton1=new TextButton("-1",skin); 

     table.setWidth(400); 
     table.add(textButton).padRight(80); 
     table.add(sliderContainer).width(sliderContainer.getWidth()); 
     table.add(textButton1).padLeft(80); 

     table.pack(); 
     Gdx.input.setInputProcessor(stage); 

    } 

    @Override 
    public void render() { 
     super.render(); 

     Gdx.gl.glClearColor(1,1,1,1); 
     Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 

     stage.draw(); 
     stage.act(); 
    } 

    @Override 
    public void resize(int width, int height) { 
     super.resize(width, height); 
     stage.getViewport().update(width,height); 
     Camera camera=stage.getCamera(); 
     camera.position.set(camera.viewportWidth/2.0f,camera.viewportHeight/2.0f,0); 
    } 
} 

sortie

enter image description here