gpt4 book ai didi

java - 使用函数将元素添加到类数组。处理3中的 "Paint"

转载 作者:太空宇宙 更新时间:2023-11-04 10:22:12 26 4
gpt4 key购买 nike

我正在尝试使用Processing 3 创建一个“Paint”应用程序,并且我想添加按钮来更改颜色(稍后用于画笔、大小等)。

我陷入困境,因为我不断收到 NullPointerException 将按钮添加到我的数组。

(我知道我可以在创建每个没有数组的按钮后询问 ​​mouseX 和 Y,但这对我来说似乎有点不专业,并且随着时间的推移会变得非常困惑)。

错误:第 24 行 ->“allButtons[counter].name = Name;”

*旁注:我对处理/Java xd 还很陌生

这是我的代码:

class button
{
public String name;
public int x;
public int y;
public color curColor;
};

color currentColor = color(0, 0, 0);
String currentBrush = "Brush";
int currentBrushSize = 3;
button[] allButtons = new button[100];
int buttonSize = 20;
int counter = 1;

void setup() {
size(800, 600);
background(255);
surface.setResizable(true);
surface.setTitle("Not Skribble");
}

void button(String Name, int X, int Y, color CurColor) {
allButtons[counter].name = Name;
allButtons[counter].x = X;
allButtons[counter].y = Y;
allButtons[counter].curColor = CurColor;
counter += 1;
fill(CurColor);
rect(X, Y, buttonSize, buttonSize);
if (overButton(X, Y, X + buttonSize, Y + buttonSize)) {
fill(0, 0, 0, 80);
rect(X, Y, buttonSize, buttonSize);
}
}

boolean overButton(int minX, int minY, int maxX, int maxY) {
if (mouseX >= minX && mouseX <= maxX) {
if (mouseY >= minY && mouseY <= maxY) {
return true;
}
}
return false;
}

boolean buttonPressed(String name) {
for (int i = 0; i < allButtons.length; i++) {
if (name == allButtons[i].name) {
if (mouseX >= allButtons[i].x && mouseX <= allButtons[i].x + buttonSize) {
if (mouseY >= allButtons[i].y && mouseY <= allButtons[i].y + buttonSize) {
if (mousePressed) {
return true;
}
}
}
}
}
return false;
}

void setColor(color settingColor) {
currentColor = settingColor;
}

void setBrush(String settingBrush) {
currentBrush = settingBrush;
}

void setBrushSize(int settingBrushSize) {
currentBrushSize = settingBrushSize;
}

void colorButtons() {
button("Orange", 10, 10, color(255, 100, 0));
if (buttonPressed("Orange")) setColor(color(255, 100, 0));

button("Blue", 50, 10, color(255, 100, 0));
if (buttonPressed("Blue")) setColor(color(0, 0, 255));
}
void brushButtons(){

}
void settingButtons(){

}

void draw() {
noStroke();
fill(100);
rect(0, 0, width, 70);

colorButtons();
brushButtons();
settingButtons();
}

最佳答案

当您创建这样的数组时:

Button[] allButtons = new Button[100];

您正在创建一个可以容纳 100 个 Button 实例的数组。但该数组一开始是空的。尝试做这样的事情:

println(allButtons[0]);

您将看到打印出 null,这意味着该值基本上为空。您实际上尚未向数组添加任何 Button 实例。这就是您收到错误的原因:因为您尝试使用不存在的值。

要将实例添加到数组中,您需要执行以下操作:

allButtons[0] = new Button();

此时可以安全地使用该值:

allButtons[0].name = "cancel";

顺便说一下,您可能会考虑使用 ArrayList 而不是数组。或者利用Processing 的数组函数,您可以将元素添加到数组中,而不是创建大小为100 的数组。

此外,今后请尝试使用正确的命名约定。变量应以小写字母开头,类应以大写字母开头。这使您的代码更易于阅读。

关于java - 使用函数将元素添加到类数组。处理3中的 "Paint",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51003825/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com