Java / libgdx轻松实现Equals枚举?

时间:2016-01-27 21:11:35

标签: java animation libgdx

背景信息

因为我在基于Java / libgdx的多人2d rpg工作了几天。 今天我尝试在我的播放器中添加一些动画,这些动画适用于空闲动画。但是,继续我的问题我如何不止一次这样做? 我正在使用png spritesheets用于不同的状态,如空闲,步行等。 我在我的播放器类中使用状态,如左/右空闲/走动。在我的动画类中也有,同样但我无法比较它们,因为它们是枚举。

**主要问题**

是否可以通过简单的方法比较和设置

中的枚举状态
class Player {

     public enum Animationstates{

     IDLE,RIGHT,LEFT

     }

   Animationstates Currentstate;

   public AnimationState GetStatefromplayer(){

   return Currentstate;

   }


 }

class Animatedsprite{

    public enum AnimationStates{

    IDLE,RIGHT,LEFT

    }

   AnimationState Currentstate = AnimationState.IDLE;

   public void setState  (AnimationState state){

  Currentstate = state;

   }



  }

我尝试了几个不同的事情,如:

Animatedsprite.setState(Player.getState());

但那没有用:/任何解决方案?

2 个答案:

答案 0 :(得分:1)

实际上,就我理解你的问题而言,你只需在类之外创建一个AnimationStates枚举,然后在你需要的任何地方使用它。

所以,你最终会得到三个这样的类(全部在不同的文件中):

class Player {

       AnimationState currentstate;

       public AnimationState GetStatefromplayer(){
              return currentstate;
       }

}


class Animatedsprite{

   AnimationState currentstate = AnimationState.IDLE;

   public void setState  (AnimationState state){
          currentstate = state;
   }
}

   public enum AnimationState{

        IDLE,RIGHT,LEFT;

    }

答案 1 :(得分:1)

如果他们有相同的名字,他们会这样做;

这是你比较它们的方式:

player.CurrentState.toString().equals(animatedSprite.CurrentState.toString())

这是你设置一个到另一个的方式:

player.setState(Player.AnimationStates.valueOf(animatedSprite.CurrentState.toString()))

这是一个可以帮助您更好地理解的链接:

https://stackoverflow.com/a/604426/2205307