libgdx scene2d 添加多个 table
libgdx scene2d add multi table
我正在尝试在底部屏幕上显示此 table。
首先,我在根 table 上添加了两个 table。每个 Table 有四个单元格。
这是我的代码。怎么可以这样。此代码无效。
Table table = new Table();
table.bottom();
table.setFillParent(true);
Table table1 = new Table();
table1.setFillParent(true);
Table table2 = new Table();
table2.setFillParent(true);
.
.
.
table2.add(image1).size(image1.getWidth(), image1.getHeight());
table3.add(image2).size(image2.getWidth(), image2.getHeight());
table3.add(image3).size(image3.getWidth(), image3.getHeight());
table3.add(image4).size(image4.getWidth(), image4.getHeight());
table3.add(image5).size(image5.getWidth(), image5.getHeight());
table2.add(table3);
table2.row();
table2.add(image6).size(image6.getWidth(), image6.getHeight());
table2.add(image7).size(image7.getWidth(), image7.getHeight());
table2.add(image8).size(image8.getWidth(), image8.getHeight());
table2.add();
table1.add(table2);
table.add(table1).expandX();
table5.add(image9).size(image9.getWidth(), image9.getHeight());
table6.add(image10).size(image10.getWidth(), image10.getHeight());
table6.add(image11).size(image11.getWidth(), image11.getHeight());
table6.add(image12).size(image12.getWidth(), image12.getHeight());
table6.add(image13).size(image13.getWidth(), image13.getHeight());
table5.add(table6);
table5.row();
table5.add(image6).size(image6.getWidth(), image6.getHeight());
table5.add(image7).size(image7.getWidth(), image7.getHeight());
table5.add(image8).size(image8.getWidth(), image8.getHeight());
table5.add();
table4.add(table5);
table.add(table4).expandX();
对于两个根 table 中的每一个,我将其设为 4x2 table,其中第一个单元格跨越三列,第二个单元格包含一个内部 table 四个单元格。
我还会尽可能使用辅助方法来减少冗余,使其更易于调整。尝试从这个开始(未经测试):
private static Cell addSizedImage(Table table, Image image){
return table.add(image).size(image.getWidth(), image.getHeight());
}
private static Table generateBlock (Image... imgs){
if (imgs.length != 8) throw new UnsupportedOperationException("Must have 8 images");
Table root = new Table();
addSizedImage(root, imgs[0]).colspan(3);
Table innerTable = new Table();
addSizedImage(innerTable, imgs[1]);
addSizedImage(innerTable, imgs[2]).row();
addSizedImage(innerTable, imgs[3]);
addSizedImage(innerTable, imgs[4]);
root.add(innerTable).row();
addSizedImage(root, imgs[5]);
addSizedImage(root, imgs[6]);
addSizedImage(root, imgs[7]);
return root;
}
private Table createImagesUI (){
Table root = new Table();
root.setFillParent(true);
root.bottom();
root.add(generateBlock(image1, image2, image3, image4, image5, image6, image7, image8)).expandX();
root.add(generateBlock(image9, image10, image11, image12, image13, image14, image15, image16)).expandX();
return root;
}
我正在尝试在底部屏幕上显示此 table。
首先,我在根 table 上添加了两个 table。每个 Table 有四个单元格。
这是我的代码。怎么可以这样。此代码无效。
Table table = new Table();
table.bottom();
table.setFillParent(true);
Table table1 = new Table();
table1.setFillParent(true);
Table table2 = new Table();
table2.setFillParent(true);
.
.
.
table2.add(image1).size(image1.getWidth(), image1.getHeight());
table3.add(image2).size(image2.getWidth(), image2.getHeight());
table3.add(image3).size(image3.getWidth(), image3.getHeight());
table3.add(image4).size(image4.getWidth(), image4.getHeight());
table3.add(image5).size(image5.getWidth(), image5.getHeight());
table2.add(table3);
table2.row();
table2.add(image6).size(image6.getWidth(), image6.getHeight());
table2.add(image7).size(image7.getWidth(), image7.getHeight());
table2.add(image8).size(image8.getWidth(), image8.getHeight());
table2.add();
table1.add(table2);
table.add(table1).expandX();
table5.add(image9).size(image9.getWidth(), image9.getHeight());
table6.add(image10).size(image10.getWidth(), image10.getHeight());
table6.add(image11).size(image11.getWidth(), image11.getHeight());
table6.add(image12).size(image12.getWidth(), image12.getHeight());
table6.add(image13).size(image13.getWidth(), image13.getHeight());
table5.add(table6);
table5.row();
table5.add(image6).size(image6.getWidth(), image6.getHeight());
table5.add(image7).size(image7.getWidth(), image7.getHeight());
table5.add(image8).size(image8.getWidth(), image8.getHeight());
table5.add();
table4.add(table5);
table.add(table4).expandX();
对于两个根 table 中的每一个,我将其设为 4x2 table,其中第一个单元格跨越三列,第二个单元格包含一个内部 table 四个单元格。
我还会尽可能使用辅助方法来减少冗余,使其更易于调整。尝试从这个开始(未经测试):
private static Cell addSizedImage(Table table, Image image){
return table.add(image).size(image.getWidth(), image.getHeight());
}
private static Table generateBlock (Image... imgs){
if (imgs.length != 8) throw new UnsupportedOperationException("Must have 8 images");
Table root = new Table();
addSizedImage(root, imgs[0]).colspan(3);
Table innerTable = new Table();
addSizedImage(innerTable, imgs[1]);
addSizedImage(innerTable, imgs[2]).row();
addSizedImage(innerTable, imgs[3]);
addSizedImage(innerTable, imgs[4]);
root.add(innerTable).row();
addSizedImage(root, imgs[5]);
addSizedImage(root, imgs[6]);
addSizedImage(root, imgs[7]);
return root;
}
private Table createImagesUI (){
Table root = new Table();
root.setFillParent(true);
root.bottom();
root.add(generateBlock(image1, image2, image3, image4, image5, image6, image7, image8)).expandX();
root.add(generateBlock(image9, image10, image11, image12, image13, image14, image15, image16)).expandX();
return root;
}