当前位置: 首页 > 面试题库 >

您如何在libgdx阶段对Actor进行排序?

谷梁宝
2023-03-14
问题内容

我在LibGdx
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)

我不知道我在做什么错。谁可以给我解释一下这个?


问题答案:

看起来您的代码Stage.getActors()返回的ArrayActors而不是List
Collections.sort()方法仅接受列表。尝试:

Collections.sort(Arrays.asList(Stage.getActors().toArray()), new ActorComparator());

@James Holloway的排序更新(按问题中的z-index进行更新): 舞台将z-index覆盖为Array的内部顺序。因此,设置Z-
Index无效,除非您将其设置为大于列表的长度,然后仅将图像放在列表的顶部(内部舞台会这样做)。这可以通过按名称或ID排序来解决。



 类似资料:
  • 问题内容: 我正在尝试这样做: 但这不对…文档模糊不清…您如何在Jinja2中做到这一点? 问题答案: 从2.6版开始,Jinja2的内置排序过滤器允许您指定属性以进行排序: 参见http://jinja.pocoo.org/docs/templates/#sort

  • 我想根据数字字段对搜索结果进行排序。在下面的示例代码中,我希望基于'Age'字段进行排序。我从以下答案开始: [如何在Lucene 6中对IntPont或LongPoint字段进行排序 [在Lucene中根据数字字段对搜索结果进行排序 我在搜索函数中将sortfield.type.score更改为sortfield.type.long。但我得到: 意外的docvalues为字段“年龄”键入NONE

  • 问题内容: 我有一堂水果课。我正在创建此类的列表,并将每个水果添加到列表中。我想根据水果名称的顺序对该列表进行排序。 我正在使用for循环创建它的列表 我需要使用列表中每个对象的水果名称对该arrayList进行排序 问题答案: 使用这样的: 现在,你的水果清单将基于进行排序。

  • 问题内容: 我们如何排序? 我想根据中的值进行排序。 问题答案: 你是否必须使用HashMap?如果只需要Map Interface,请使用TreeMap 如果要通过比较HashMap中的值进行排序。你必须编写代码才能执行此操作,如果要执行此操作,则可以对HashMap的值进行排序: 如果你想经常访问此排序列表,则可以将元素插入到中,尽管集合和列表的语义有些不同。

  • 问题内容: 如何在Android上按标签名称的升序和降序对JSONArray进行排序。 在我的应用程序中,我有一个类似于以下内容的JSON,需要根据用户选项显示数据(按user_id标记按升序或降序排序)。我已将JSON解析如下: 这是我的JSON响应: 解析时,我需要按“ user_id”标签名称排序的“结果” JSON数组,如何在Android中做到这一点? 问题答案: 这段代码可以返回排序后