【问题标题】:comparing sprites in Libgdx比较 Libgdx 中的精灵
【发布时间】:2015-02-10 11:21:17
【问题描述】:

这是我的代码:

    private Sprite sprGuy;

    sprGuy  = atlas.createSprite("guy");

    Sprite a = new Sprite(sprGuy);
    Sprite b = new Sprite(sprGuy);

    if (a.equals(b)) {
        System.out.println("a is equal to b");
    }

根据 Libgdx 文档:new Sprite(Sprite sprite)...“创建一个精灵,它是指定精灵的在各个方面的副本。”

但如果 'a'sprGuy 的副本,而 'b'sprGuy 的副本,为什么 a.equals(b) 是假的?

我应该如何检查精灵是否来自同一个“父亲”?

【问题讨论】:

    标签: java libgdx


    【解决方案1】:

    正如您在 libGDX Sprite.java 源文件中看到的,equals() 方法尚未为 Sprite 实现。

    因此,您正在调用 Java Object 类的默认 equals() 方法,该方法仅比较引用,这对于代码中的两个对象是不同的。

    【讨论】:

      【解决方案2】:

      如果是为了简单的事情并且可以控制精灵中纹理的分配,你可以使用这个例子:

      private Sprite sprGuy;
      
      sprGuy  = atlas.createSprite("guy");
      
      Sprite a = new Sprite(sprGuy);
      Sprite b = new Sprite(sprGuy);
      
      if (a.getTexture().equals(b.getTexture())) {
          System.out.println("a is equal to b");
      }
      

      【讨论】:

        【解决方案3】:

        这是我的新方法:

        首先,我创建了这个新类:

        public class SpriteAux {
        
            public String name;
            public Sprite sprite;
        
            public SpriteAux(Sprite sprite, String name) {
                this.sprite = sprite;
                this.name = name;       
            }
        
        }
        

        因此,创建包含精灵和名称的新对象,我们可以获取并比较名称:

        private Sprite sprGuy;
        private Sprite sprBoss;
        
        sprGuy  = atlas.createSprite("guy");
        sprBoss  = atlas.createSprite("boss");
        
        SpriteAux a = new SpriteAux(sprGuy, "guy");
        SpriteAux b = new SpriteAux(sprGuy, "guy");
        SpriteAux c = new SpriteAux(sprBoss, "boss");
        
        if (a.name.equals(b.name)) {                  //This is true!
            System.out.println("a is equal to b");
        }
        
        if (a.name.equals(c.name)) {                  //This is false!
            System.out.println("a is equal to c");
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2023-03-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-09-02
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多