【问题标题】:Libgdx Stage.setActionsRequestRendering(true) not working as expectedLibgdx Stage.setActionsRequestRendering(true) 未按预期工作
【发布时间】:2023-03-11 00:30:02
【问题描述】:

我正在尝试禁用 LibGDX 中的连续帧渲染。

正如 libgdx 文档 here 中所述,可以通过调用 setContinuousRendering(false) 来完成,并且效果很好。

我想做的另一件事是,当对某个演员应用动作时,必须渲染每一帧,直到动作尚未完成。 为此,我从阶段setActionsRequestRendering(true) 调用了该方法,但没有任何改变。帧被丢弃并且不被渲染。 对演员应用的动作正在起作用,但它被直接应用而没有任何效果。

我在这里缺少什么?

更新:

我有一个 Actor,它是图像并且像这样对 Actor 应用动作。

img.addAction(Actions.moveTo(x, y, 0.5f, Interpolation.swingIn));

此操作会跳过前几帧。当动作处于活动状态时,fps 记录器也会显示 1-20 之间的随机帧数。没有其他可能影响帧速率的问题。

如果在拖动 actor 之后应用此操作,则此操作也会按预期工作。但如果点击后应用则不起作用。

拖动后应用的操作。

img.addAction(Actions.sequence(
        Actions.moveTo(x, y, 0.5f , Interpolation.exp5Out),
        Actions.run(new Runnable() {
            @Override
            public void run() {
                dragged = true;
            }
        })));

【问题讨论】:

    标签: android libgdx


    【解决方案1】:

    一开始here是连续渲染的wiki入口。

    回答你的问题:你错过了打电话

    Gdx.graphics.requestRendering();
    

    你自己。 wiki 条目中提到的许多默认操作都在调用此方法,因此它们请求渲染调用。对于您自己的自定义操作,您必须手动执行此操作。

    【讨论】:

    • 我阅读了您在此处链接的 wiki。如果我理解正确,默认操作应自动调用setActionsRequestRendering(true)。但我的游戏不画帧。这就是问题所在
    • @Prashant 你是否覆盖了默认的 Action 类?然后您使用自定义实现,您必须自己请求渲染。我在回答中提到了这一点:) 只有当您使用 libGDX 提供的一些默认操作时,它才会自动调用,而不是您必须自己实现“运行”方法的“默认”操作。 libGDX 提供的默认操作例如“MoveToAction”
    • 感谢您的回复,我正在使用MoveToAction。而不是覆盖Action。我将在此处发布该代码的一部分。也许你可以帮我检查一下我做错了什么。
    • 好的,这清除了很多 :D 是的,这样做 ;) 我会尽可能地帮助你。
    • 我在做什么吗?
    猜你喜欢
    • 2014-05-18
    • 1970-01-01
    • 2022-01-03
    • 1970-01-01
    • 2012-07-04
    • 1970-01-01
    • 2020-03-20
    • 2021-06-04
    • 2022-01-24
    相关资源
    最近更新 更多