【问题标题】:LibGDX Draw Scrollpane WITHOUT StageLibGDX 绘制没有舞台的滚动窗格
【发布时间】:2016-03-17 04:28:35
【问题描述】:

我有一个使用 LibGDX 制作的游戏,我的游戏中根本没有实现 scene2d 或阶段或演员,但现在需要一个滚动窗格。我见过的每个示例都使用阶段和演员来绘制滚动窗格,是否可以使用批处理器或任何东西来绘制它?像这样:

batcher.draw(scrollpane);

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

【问题讨论】:

    标签: java android scroll libgdx scrollpane


    【解决方案1】:

    每个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);
    

    【讨论】:

    • 非常感谢。我对实现舞台犹豫不决的唯一原因是因为很简单,这是我的第一款游戏,而当我建立游戏的基础时,我从来不知道scene2d。现在已经走了很长一段路,我唯一担心的是,如果我想以绘制舞台为中心,我将不得不更改游戏代码的整个基础。阅读您的答案后,似乎值得花时间重构代码并通过一个舞台绘制所有内容,但是是否可以只绘制带有舞台的滚动窗格而让其他所有内容保持原样?再次感谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-18
    • 2013-11-30
    • 1970-01-01
    • 2012-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多