2015-02-08 63 views
0

我为我的游戏使用了LibGdx。在下面的方法中,我传递了RED_BALL,但该方法没有返回true。我想知道纹理比较是否可行。如果是的话,最好的办法是什么。如何比较LibGdx中的纹理

private boolean isSqueezableBalls(Texture t) { 
    if(t.equals(RED_BALL) || 
      t.equals(BLUE_BALL) || 
       t.equals(GREEN_BALL)){ 
     return true; 
    } 
    return false; 
} 
+1

纹理是资源,你可能希望参考它们进行比较。顺便说一句,你可能不想使用静态资源,你可能想要将多个图像打包成单个纹理,并直接使用TextureRegion而不是Texture。 – Xoppa 2015-02-08 19:39:23

+0

Texture类不会覆盖'.equals',所以你可以使用'=='。它只是测试相同的参考。 – Tenfour04 2015-02-08 23:17:30

回答

0

你需要做的是开发更多的OOP编码habbit。 然后你可以添加一个纹理到一个类,当你需要比较它时不会有问题。您稍后可以简单地检查实例。

class Ball { 
     // Ball Data 

     public Ball() { 
      // ADD LOGIC 
     } 
    } 

    class GreenBall extends Ball { 

     public GreenBall() { 
      super(); 
      // ADD LOGIC 
     } 
    } 

    class RedBall extends Ball { 

     public RedBall() { 
      super(); 
      //ADD LOGIC 
     } 

所以,你可以有这样的方法:

private void isSquizableBall(Ball b) { 
    if(b instanceof GreenBall){ 
     System.out.print("It's a green ball"); 

    } else if(b instanceof RedBall){ 
     System.out.print("It's a green ball"); 
    } 
}