我在一个多人游戏中创建了一个大厅,它可以在一张table上显示任意数量的玩家。
camera = new OrthographicCamera(WIDTH,HEIGHT);
camera.position.set(WIDTH/2,HEIGHT/2, 0);
camera.update();
stage = new Stage();
Gdx.input.setInputProcessor(stage);
stage.setCamera(camera);
stage.setViewport(WIDTH,HEIGHT,false);
ScrollPaneStyle paneStyle = new ScrollPaneStyle();
paneStyle.background = new TextureRegionDrawable(WizardsDuel.atlas.findRegion("cavebg"));
paneStyle.vScrollKnob = new TextureRegionDrawable(WizardsDuel.atlas.findRegion("GUI/slidernob"));
paneStyle.hScroll = paneStyle.hScrollKnob = paneStyle.vScroll = paneStyle.vScrollKnob;
Table container = new Table();
table = new Table();
ScrollPane pane = new ScrollPane(table,paneStyle);
container.add(pane).width(WIDTH).height(HEIGHT);
container.row();
container.setBounds(0,0,WIDTH,HEIGHT);
stage.addActor(container);
font = new BitmapFont();
color = new Color(0,0,0,1);
style = new TextButtonStyle();
style.font = font;
style.up = new TextureRegionDrawable(WizardsDuel.atlas.findRegion("GUI/guibg"));
style.fontColor = color;
handler = new ChangeHandler();
ArrayList<User> users = FirebaseManager.lobbyUsers;
for(int i = 0; i < users.size() || i < 100; i++){
TextButton tmp = new TextButton("",style);
tmp.scale(2);
//tmp.setText(users.get(i).name);
tmp.setText(i+ " asdf");
tmp.addListener(handler);
table.add(tmp).width(WIDTH/4f);
if(i%2 == 1 && i > 0)
table.row();
}
尽管表格明显延伸到屏幕底部(应该是滚动窗格的底部)以下,但没有滚动条,单击和拖动也没有任何作用。
截图:
5条答案
按热度按时间dced5bon1#
你实际上需要两个东西。一个外部容器和一个内部容器。你经常为此使用两个表。所以这里有一个我如何使用scrollPane的小例子。实际上没有样式,但它应该很清楚。
表格是你添加可滚动内容的表格。容器是外部框。所以你可以在滚动框上添加标题。外部框(容器)需要一个大小。否则你将没有任何滚动条或类似的东西。你需要内部表格。
添加的简单示例:
给予它更多的行,它可以显示,你会有一个滚动窗格。否则没有滚动条或类似的。
合二为一。我想你只是漏掉了外 Package 。加进去就行了。别忘了设定尺寸。
nzk0hqpo2#
也许你忘了在render()中使用stage act,添加如下内容:
6yjfywim3#
我的问题是它没有接收输入,我不应该在构造函数中设置输入处理器,因为,上一个屏幕在处理器被“隐藏”时将其设置为null,所以当我将该行移到LobbyScreen的show方法时,它发生在上一个屏幕被隐藏之后,并且输入设置正确。
qvk1mo1f4#
在你初始化滚动窗格之后你应该首先调用这个
ewm0tg9j5#
2023年|Kotlin
要滚动的元素必须先添加到舞台或组,然后才能传递到ScrollPane
1.创建所需的执行元并将其添加到阶段或组
1.创建一个滚动窗格并在其中放置一个参与者
1.设置参与者和滚动窗格的位置和尺寸
PS速度_daN:爱你所做的💚。