2015-02-10 69 views
0

比较精灵这是我的代码:在Libgdx

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文档:新的Sprite(雪碧雪碧) ...“创建一个精灵是在的各种方式一个副本指定的精灵“。

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

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

回答

1

这是我的新方法:

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

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"); 
} 
1

正如您在libGDX Sprite.java源文件中看到的,equals()方法尚未针对Sprite执行。

因此,您打电话给Java Object类的默认equals()方法,该方法只比较引用,它们对于代码中的两个对象是不同的。

1

如果是简单的东西,并有超过质感的精灵分配控制,你可以用这个例子:

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"); 
}