首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LibGDX ScrollPane不画ImageButton

LibGDX ScrollPane不画ImageButton
EN

Stack Overflow用户
提问于 2017-03-21 07:47:21
回答 1查看 109关注 0票数 0

我对LibGDX API有点陌生,我试图在表中组织标签和ImageButtons (以及那些表中的表)。当我运行这个应用程序时,ImageButtons不会被绘制到屏幕上。

我到处都找遍了,找不到答案,所以我真的很感激你的帮助。

编辑:可能会发生这种情况,因为我在表中使用表,但我没有找到任何关于嵌套表的信息,或者类似的东西。

我在呈现中调用一个方法,以保持标签的文本更改,如下所示:

代码语言:javascript
复制
public void drawTable(){
    final Table scrollTable = new Table();
    scrollTable.addActor(canbtn);
    scrollTable.row();
    //other buttons

    Label.LabelStyle style = new Label.LabelStyle(font, Color.WHITE);
    Label.LabelStyle style2 = new Label.LabelStyle(font2, Color.WHITE);

    CustomLabel amtLabel = new CustomLabel("" + (int)(game.tot.getSum()), style);
    CustomLabel mizcoins = new CustomLabel("Mizcoins", style2);
    CustomLabel mpsCount = new CustomLabel(game.totMPS + " MPS", style2);

    PerSec can = game.boosts.get("Can").getPerSec();

    Table t = new Table();
    t.add(drawer(can, canbtn));
    t.row();
    scroller = new ScrollPane(t);

    table = new Table(); //the container table
    table.setFillParent(true);
    table.add(amtLabel).padTop(50);
    table.row();
    table.add(mizcoins);
    table.row();
    table.add(mpsCount);
    table.row();
    table.add(scroller).fill().expand();//.space(350).padBottom(10);
}

以及抽屉()功能:

代码语言:javascript
复制
public Table drawer(PerSec perSec, ImageButton imgbtn){
    Label.LabelStyle style = new Label.LabelStyle(font2, Color.WHITE);
    Label.LabelStyle style2 = new Label.LabelStyle(font2, Color.WHITE);
    Label.LabelStyle style3 = new Label.LabelStyle(font2, Color.RED);

    CustomLabel nameLabel = new CustomLabel(perSec.getType(), style);
    CustomLabel priceLabel = new CustomLabel("Price: " + perSec.getPrice(), style2);
    CustomLabel addsLabel = new CustomLabel("Adds: " + perSec.getDefAddPerSec(), style2);
    CustomLabel youHaveLabel = new CustomLabel("You Have: " + perSec.getAmt(), style3);

    Table mainTable = new Table();
    Table smallTable = new Table();

    smallTable.add(priceLabel);
    smallTable.row();
    smallTable.add(youHaveLabel);

    mainTable.add(nameLabel);
    mainTable.add(imgbtn);
    mainTable.row();
    mainTable.add(smallTable);
    mainTable.add(addsLabel);

    return mainTable;

}
EN

回答 1

Stack Overflow用户

发布于 2017-03-22 11:07:54

一些伪代码,向您展示如何创建这样的表(如您的注释中的图像所描述的)。

代码语言:javascript
复制
private void setupScrollPane()
{
    ScrollPane pane = new ScrollPane(generatePanels());
    pane.setBounds(0,0,Gdx.graphics.getWidth(),Gdx.graphics.getHeight());
    stage.addActor(pane);
}

private Table generatePanels()
{
    Table list = new Table();
    for(int i=0;i<2;i++)
    {
        list.add(genetePanel()).row();
    }
    return list;
}

private Table genetePanel()
{
    Table root = new Table();
    root.setSize(400,200);

    Table left = new Table();
    Table middle = new Table();
    Table right = new Table();

    left.add().growY().row();       //an empty row for padding
    left.add(new Label("Price label")).row();
    left.add(new Label("you have label")).row();
    left.add().growY().row();       //an empty row for padding

    middle.add(new Label("Name label")).row();
    middle.add().growY().row(); //an empty row for padding

    right.add(new ImageButton()).row();
    right.add(new Label("Adds label")).row();

    root.add(left).growX();
    root.add(middle).growX();
    root.add(right).growX();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42921062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档