Variables 使用现有变量创建处理枚举
我想用使用现有变量的值创建一个枚举。我使用的是Processing,因此我指定的宽度和高度是java全局变量,可以从任何地方访问,而无需上下文。 我所做的可能吗?我应该做点别的吗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
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.