我是处理新手,所以如果我的问题不够清楚,我很抱歉。
我正在制作一种烤面包机,必须在点击开始按钮时启动,并在单击停止按钮时弹出面包。我制作了一个按钮类,并在我的主程序中创建了一个新的按钮对象。为了测试,我在单击开始按钮时将背景颜色从白色变为红色。
启动按钮有效,但现在我正在尝试创建一个新的按钮对象(STOP按钮),但是当我创建一个停止按钮对象时,它会覆盖“开始”按钮对象。首先,我可能是因为他们的开始按钮是停止按钮下面的位置,但那不是它。一旦我处理,图像加载也需要永远。
我希望你能帮助我:)
int s = 0;
int m = 0;
Button stop_button;
Button on_button;
int clk = 1;
void setup()
{
on_button = new Button("Start", 230, 300, 60, 30);
stop_button = new Button("Start", 230, 300, 60, 30);
size(600, 600);
background(255, 255, 255);
}
void draw () {
stroke(240, 242, 179);
fill(240, 242, 179);
rect(190,150,210,130, 30);
stroke(126, 191, 167);
fill(126, 191, 167);
rect(170,200,250,170, 30);
//BUTTON CODE
if (on_button.MouseIsOver()) {
}
on_button.Draw();
}
void mousePressed()
{
if (on_button.MouseIsOver())
print("Clicked: ");
println(clk++);
time();
}
}
void time ()
{
background(255, 0, 0);
}
// BUTTON CLASS
class Button {
String label; // button label
float x; // top left corner x position
float y; // top left corner y position
float w; // width of button
float h; // height of button
// constructor
Button(String labelB, float xpos, float ypos, float widthB, float heightB) {
label = labelB;
x = xpos;
y = ypos;
w = widthB;
h = heightB;
}
void Draw() {
fill(218);
stroke(141);
rect(x, y, w, h, 10);
textAlign(CENTER, CENTER);
fill(0);
text(label, x + (w / 2), y + (h / 2));
}
boolean MouseIsOver() {
if (mouseX > x && mouseX < (x + w) && mouseY > y && mouseY < (y + h)) {
return true;
}
return false;
}
}
答案 0 :(得分:1)
我并不完全理解你的代码,因为你永远不会对点击做出反应,而且你从不画第二个按钮。
如果我是你,我会break your problem down into smaller steps并一次采取一个步骤。例如,您是否可以获得一个非常基本的示例运行,该示例显示单个按钮,只要您单击它就会向控制台输出消息?
从那里开始,可能会在另一个位置添加第二个按钮 ,当您单击它时会打印另一个消息。在你继续前进之前要完美地工作。
当你开始工作时,然后更改你的第一个草图,以便在单击按钮时更改背景颜色。最后,您可以在单击第一个按钮后组合上述所有内容以显示第二个按钮。
提示:您可能希望使用boolean
变量来表示当前显示的按钮。但就像我说的那样,你最好的选择是开始更简单,并以更小的步骤向前迈进。