代码之家  ›  专栏  ›  技术社区  ›  genaray

Java/libgdx轻松实现Equals枚举?

  •  -1
  • genaray  · 技术社区  · 10 年前

    背景信息

    几天以来,我正在开发一个基于Java/libgdx的多人2d rpg。 今天我尝试给我的播放器添加一些动画,这对空闲动画很有用。但这是我的问题,我如何做到这一点不止一次? 我正在使用png精灵表,用于不同的状态,如空闲、行走等。 我在Player类中使用了空闲/向右/向左行走等状态。在我的动画类There states中,也有相同的,但我无法比较它们,因为它们是枚举。

    **主要问题**

    是否有一种简单的方法来比较和设置枚举状态

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

    我尝试了一些不同的事情,比如:

    动画精灵.setState(Player.getState);

    但这并不奏效:/有什么解决方案吗?

    2 回复  |  直到 10 年前
        1
  •  1
  •   Community Mohan Dere    9 年前

    如果他们有相同的名字,在你的情况下,他们有;

    这是您比较它们的方法:

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

    这就是如何将一个设置为另一个:

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

    下面是一个链接,可以帮助您更好地理解:

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

        2
  •  1
  •   Enigo    10 年前

    事实上,就我理解您的问题而言,您只需在类之外创建一个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;
    
        }