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

Variables 使用现有变量创建处理枚举,variables,enums,processing,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

我想用使用现有变量的值创建一个枚举。我使用的是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;
  }
}

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

这是您可以做到的,尽管首先将要输入到大小(x,y)中的参数定义为静态最终整数,然后使用这些参数构造枚举更有意义,而不是遍历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() {
}


这个
宽度
高度
来自哪里?还要注意,枚举是常量,因此您需要具有常量值的东西。它们是由处理语言设置的全局变量,被编译为Java,问题是它们不是静态的。
trinketypes
与这个问题有什么关系?同样
width
height
将在
settings()
/
setup()
完成后进行评估。它们不是java的全局变量,而是从常量继承而来的,而不是常量(例如,如果稍后在程序中调用
surface.setSize()
,它们可能会发生变化。)
Prints 250.