LibGDX 绘制没有舞台的滚动窗格



我有一个用LibGDX制作的游戏,我还没有在我的游戏中实现scene2d或舞台或Actor,但现在需要一个滚动窗格。我看到的每个示例都使用舞台和演员来绘制滚动窗格,是否可以使用批处理器或其他任何东西绘制它?这样:

batcher.draw(scrollpane);

而不是创建一个我根本没有做过的整个舞台。

每个演员都有一个绘制和表演功能,当你将它们附加到一个阶段时,这些功能会被该阶段调用。所以你需要做的就是自己打电话抽奖。由于您想要与滚动窗格交互,因此还需要对其调用 action。它还需要一个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);

最新更新