2015-02-10 37 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"); 
}