【发布时间】:2016-03-17 04:28:35
【问题描述】:
我有一个使用 LibGDX 制作的游戏,我的游戏中根本没有实现 scene2d 或阶段或演员,但现在需要一个滚动窗格。我见过的每个示例都使用阶段和演员来绘制滚动窗格,是否可以使用批处理器或任何东西来绘制它?像这样:
batcher.draw(scrollpane);
而不是创建一个我根本没有做过的整个舞台。
【问题讨论】:
标签: java android scroll libgdx scrollpane
我有一个使用 LibGDX 制作的游戏,我的游戏中根本没有实现 scene2d 或阶段或演员,但现在需要一个滚动窗格。我见过的每个示例都使用阶段和演员来绘制滚动窗格,是否可以使用批处理器或任何东西来绘制它?像这样:
batcher.draw(scrollpane);
而不是创建一个我根本没有做过的整个舞台。
【问题讨论】:
标签: java android scroll libgdx scrollpane
每个actor都有一个draw和act函数,当你将它们附加到一个stage时,它们会被那个stage调用。所以你需要做的就是自己调用draw。而且由于您想与滚动窗格进行交互,您还需要对其调用操作。它还需要一个GestureListener,这样你就可以滚动它,并且可能还有更多舞台可以处理的东西。
scrollpane.act(deltaTime);
scrollpane.draw(spriteBatch, alpha);
我真的很想知道你为什么不想要一个舞台。 Stage 为您提供了大量的功能和可扩展性。是的,对于一个滚动窗格来说,整个阶段可能有点过头了,但它不会消耗你的资源。而且你也需要演员来填充滚动窗格(你也想自己处理这些吗?)。我真的找不到任何理由离开舞台,这只是几行代码。
由于您对了解此阶段的工作原理犹豫不决,因此可能会对您有所帮助,因为对于 Stage 的基本用法知之甚少。
Stage stage = new Stage();
stage.act();
stage.draw();
//This is pretty much it, you can start adding actors to it now.
Table myTable = new Table();
myTable.setFillParent = true; // <-- sets initial table to fill it's parent (in this case the stage)
Scrollpane myScrollpane = new Scrollpane(); // <-- Add actors to hold by scrollpane
myTable.add(myScrollpane);
stage.addActor(myTable);
stage.addActor(myTable);
为了能够与舞台交互,您需要将其设置为输入处理器。
Gdx.input.setInputProcessor(stage);
//If you want multiple input processors you need to use a InputMultiplexer
InputMultiplexer im = new InputMultiplexer();
im.addProcessor(stage);
im.addProcessor(new GestureDetector(someScreen));
im.addProcessor(player.getInputProcessor);
【讨论】: