gpt4 book ai didi

java - 您如何对 libgdx 舞台中的 Actors 进行排序?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:27:47 24 4
gpt4 key购买 nike

我在对 LibGdx Stage 对象中的 Actors 进行排序时遇到问题。渲染舞台时,图像将按照添加的顺序进行渲染。舞台使用数组来保存 Actor 。我已经尝试设置每个 Actor 的 ZIndex,但它仍然没有排序。然后我尝试像这样创建一个比较器对象:

public class ActorComparator implements Comparator < Actor > {
@Override
public int compare(Actor arg0, Actor arg1) {
if (arg0.getZIndex() < arg1.getZIndex()) {
return -1;
} else if (arg0.getZIndex() == arg1.getZIndex()) {
return 0;
} else {
return 1;
}
}
}

然后当我想进行实际比较时:

Collections.sort(Stage.getActors(), new ActorComparator());

它给了我以下错误并且无法编译:

The method sort(List<T>, Comparator<? super T>) in the type Collections 
is not applicable for the arguments (Array<Actor>, ActorComparator)

我不知道我做错了什么。谁能给我解释一下?

最佳答案

与公认的答案相比,我更喜欢准备几个“层”组,然后按我喜欢的任何顺序添加到这些组中。

Group bg = new Group();
Group fg = new Group();
// the order is important in the following two lines
stage.addActor(bg);
stage.addActor(fg);

bg.addActor(whatever);
fg.addActor(whatever);
bg.addActor(whatever);
fg.addActor(whatever);

(当然 addActor() 的顺序在 bg 的元素和 fg 的元素之间仍然很重要,但在元素之间不重要fgbg 的一个元素。)

此工作流在继承场景中运行良好,其中基类拥有 protected 组层(this.bgthis.fg、...)并添加它们为了舞台。然后派生类可以在不考虑顺序的情况下向这些层添加内容。

关于java - 您如何对 libgdx 舞台中的 Actors 进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16129903/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com