我在对 LibGdx Stage 对象中的 Actor 进行排序时遇到问题。当舞台被渲染时,图像将按照添加的顺序进行渲染。 Stage 使用数组来保存 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
,但不在元素之间fg
和一个元素bg
.)
此工作流程在继承场景中运行良好,其中基类拥有受保护的组层(this.bg
, this.fg
, ...) 并将它们按顺序添加到舞台上。然后,派生类可以将内容添加到这些层中,而无需考虑顺序。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)