使用现有变量创建处理枚举

时间:2018-08-12 06:43:27

标签: variables enums processing

我想创建一个枚举,其值使用现有变量。我正在使用Processing,因此我指定的宽度和高度是java全局变量,可以在没有上下文的任何地方访问。 我正在做什么?我还应该做点其他事情吗?

public enum WaterDirection {
  NORTH(width / 2, 0);
  SOUTH(width / 2, height);
  WEST(0, height / 2);
  EAST(width, height / 2);

  public int x;
  public int y;
  WaterDirections(int x, int y) {
    this.x = x;
    this.y = y;
  }
}

我收到一条错误消息,说找不到宽度。 我可以对其进行硬编码,但我不愿意。

编辑: 这个枚举可以正常工作:

public enum TrinketTypes {
  COINS("coins", 0.50f);

  public String fileName;
  public float worth;
  TrinketTypes(String fileName, float worth) {
    this.fileName = fileName;
    this.worth = worth;
  }
}

2 个答案:

答案 0 :(得分:0)

至少在处理中,这是不可能的。 Java全局变量的宽度和高度是非静态的,枚举需要静态引用或值。

答案 1 :(得分:0)

这是您可以执行的操作,尽管首先将要输入size(x,y)的参数定义为静态最终int,然后使用这些参数构造枚举,而不是通过对您的PApplet实例的静态引用。

static PApplet p;

public enum WaterDirection {
  NORTH(p.width / 2, 0), 
  SOUTH(p.width / 2, p.height), 
  WEST(0, p.height / 2), 
  EAST(p.width, p.height / 2);

  private final int x, y;

  private WaterDirection(int x, int y) {
    this.x = x;
    this.y = y;
  }
  public int getX() {
    return x;
  }
  public int getY() {
    return y;
  }
}

void setup() {
  p = this;
  size(500, 500);
  println(WaterDirection.NORTH.getX());
}

void draw() {
}

Prints 250.