libgdx中的水平Scrollpane级别菜单?

时间:2017-05-22 07:36:01

标签: android libgdx scrollpane

在我自上而下的游戏中,我想将我的滚动窗格的位置从垂直变为水平srcollpane。我想改变滚动的方向。This image explain my problem屏幕输出 Screen menu

以下是我的代码

private Stage stage;
SpriteBatch spriteBatch;
OrthographicCamera camera;
private TextureRegion myTextureRegion;
private TextureRegionDrawable myTexRegionDrawable;
Viewport viewport;
private Texture Background,backToMain,prev,next;
Texture SelectHouseHold,HouseHold1;
ImageButton backToMainBtn,prevBtn,nextBtn,selectHouseholdImg;
ScrollPane scrollPane;
//container is new
Table table, container;
Texture texture1, texture2, texture3, texture4, texture5, texture6;
ImageButton button1, button2, button3, button4, button5, button6;

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

    final ScrollPane scrollPane = new ScrollPane(table);
    float myPadTop = Gdx.graphics.getWidth()/ 2.4f-scrollPane.getWidth()/2.4f;
    float myPadBottom = Gdx.graphics.getWidth()/1.2f-scrollPane.getWidth()/1.2f;

    scrollPane.setFlickScroll(true);
    container.add(scrollPane).padTop(myPadTop).padBottom(myPadBottom);
    table.pad(10).defaults().expandY().space(100);
    scrollPane.setSize(687, 497);

    texture1 = new Texture(Gdx.files.internal("HouseHold/household1.png"));
    texture2 = new Texture(Gdx.files.internal("HouseHold/household1.png"));
    texture3 = new Texture(Gdx.files.internal("HouseHold/household1.png"));
    texture4 = new Texture(Gdx.files.internal("HouseHold/household1.png"));
    texture5 = new Texture(Gdx.files.internal("HouseHold/household1.png"));
    texture6 = new Texture(Gdx.files.internal("HouseHold/household1.png"));

    button1 = new ImageButton(new Image(texture1).getDrawable());
    button2 = new ImageButton(new Image(texture2).getDrawable());
    button3 = new ImageButton(new Image(texture3).getDrawable());
    button4 = new ImageButton(new Image(texture4).getDrawable());
    button5 = new ImageButton(new Image(texture5).getDrawable());
    button6 = new ImageButton(new Image(texture6).getDrawable());

    //table.setFillParent(true);//Remove
   //table.defaults().width(Gdx.graphics.getWidth()/2.5f).height(Gdx.graphics.getHeight()/(8* Gdx.graphics.getHeight()/Gdx.graphics.getWidth()));//Remove

    table.add(button1).row();
    table.add(button2).row();
    table.add(button3).row();
    table.add(button4).row();
    table.add(button5).row();
    table.add(button6).row();

    //scrollPane.setX(Gdx.graphics.getWidth()/2-scrollPane.getWidth()/2);//Remove
    //scrollPane.setY(Gdx.graphics.getHeight()/2-scrollPane.getHeight()/2);//Remove

    button1.addListener(new ClickListener(){
        @Override
        public void clicked(InputEvent event, float x, float y)
        {
            System.out.println("Next Screen");
            stage.getRoot().getColor().a = 1;
            SequenceAction sequenceAction = new SequenceAction();
            sequenceAction.addAction(fadeOut(0.2f));
            sequenceAction.addAction(run(new Runnable() {
                @Override
                public void run() {
                   // game.setScreen(new SelectDiffculty(game));
                }
            }));
            stage.getRoot().addAction(sequenceAction);
        }
    });
     //Back and Next button
    prev =  new Texture(Gdx.files.internal("HouseHold/back.png"));
    myTextureRegion = new TextureRegion(prev);
    myTexRegionDrawable = new TextureRegionDrawable(myTextureRegion);
    prevBtn = new ImageButton(myTexRegionDrawable); //Set the button up
    prevBtn.setPosition(80,170);

    stage.addActor(prevBtn); //Add the button to the stage to perform rendering and take input.
    Gdx.input.setInputProcessor(stage);
    prevBtn.addListener(new InputListener(){
        @Override
        public void touchUp (InputEvent event, float x, float y, int pointer, int button) {
            System.out.println("Prev Screen");

        }
        @Override
        public boolean touchDown (InputEvent event, float x, float y, int pointer, int button) {
            return true;
        }
    });
    stage.addActor(prevBtn);
    //next
    next =  new Texture(Gdx.files.internal("HouseHold/next.png"));
    myTextureRegion = new TextureRegion(next);
    myTexRegionDrawable = new TextureRegionDrawable(myTextureRegion);
    nextBtn = new ImageButton(myTexRegionDrawable); //Set the button up
    nextBtn.setPosition(500,170);
    stage.addActor(nextBtn); //Add the button to the stage to perform rendering and take input.
    Gdx.input.setInputProcessor(stage);
    nextBtn.addListener(new InputListener(){
        @Override
        public void touchUp (InputEvent event, float x, float y, int pointer, int button) {
            System.out.println("Next House Hold");

        }
        @Override
        public boolean touchDown (InputEvent event, float x, float y, int pointer, int button) {
            return true;
        }
    });
    stage.addActor(nextBtn);

}
@Override
public void show() {
    Gdx.input.setInputProcessor(stage);
    stage.getRoot().getColor().a = 0;
    stage.getRoot().addAction(fadeIn(0.2f));
    //Start taking input from the ui
}
@Override
public void render(float delta) {
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); // Clear screen
    camera.update();
    spriteBatch.begin();
    spriteBatch.setProjectionMatrix(camera.combined);
    spriteBatch.draw(Background,0,0);

    stage.act(Gdx.graphics.getDeltaTime()); //Perform ui logic
    spriteBatch.end();
    stage.getViewport().apply();
    stage.draw(); //Draw the ui
}

感谢和推进我是这个框架的新手:)

1 个答案:

答案 0 :(得分:1)

row()在下一行终止,您需要在一个水平行中删除row()

table.add(button1);
table.add(button2);
table.add(button3);
table.add(button4);
table.add(button5);
table.add(button6);