Создать перечисление обработки с существующей переменной
Я хотел бы создать перечисление со значениями, которые используют существующие переменные. Я использую Обработка, поэтому ширина и высота, которые я определяю, являются глобальными 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 ответа
Это то, как вы можете это сделать, хотя было бы более целесообразно сначала определить параметры, которые вы вводите в размер (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() {
}
Prints 250.
При обработке, по крайней мере, это невозможно. Ширина и высота java глобалов нестатичны, а перечисления требуют статических ссылок или значений.