我想创建一个枚举,其值使用现有变量。我正在使用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;
}
}
答案 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.