第二个按钮对象覆盖第一个(处理)
问题描述:
Hej!第二个按钮对象覆盖第一个(处理)
我是新手,所以如果我的问题不够明确,我很抱歉。
我正在制作一种烤面包机,它必须在点击开始按钮时启动,并在点击停止按钮时弹出面包。我做了一个按钮类,并在我的主程序中创建了一个新的按钮对象。对于测试,我点击开始按钮后,将背景颜色从白色变为红色。
开始按钮的作品,但现在我试图做一个新的按钮对象(停止按钮),但是当我做一个停止按钮对象它覆盖开始按钮对象)。首先我可能是因为他们的开始按钮是停止按钮下的地方,但那不是它。一旦我处理,它也需要永久加载图像。
我希望你能帮助我:)
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 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;
}
}
答
我不完全理解你的代码,因为你从来没有反应,点击,和你'永远不会绘制第二个按钮。
如果我是你,我会break your problem down into smaller steps并一次采取一个步骤。例如,你是否可以运行一个非常基本的例子,它显示了一个单击按钮,只要点击它就会向控制台输出消息?
从那里,也许在另一个位置添加第二个按钮当您单击它时会打印不同的消息。在继续前,请完美地工作。
当你得到那个工作,然后改变你的第一个草图去做点改变背景颜色,当你点击按钮。最后,在单击第一个按钮后,可以将上述所有内容组合在一起以显示第二个按钮。
提示:您可能想要使用boolean
变量来表示哪个按钮当前正在显示。但就像我说的,你最好的选择就是简单地开始,并以更小的步骤前进。
我迄今为止唯一做的就是绘制一个烤面包机和一个开始按钮。当你点击这个按钮时,它会显示一个叫做无效时间的函数,背景变成红色 - 我只做了这个来测试它是否工作。我真的希望它在调用void time函数时启动一个定时器。但我想慢慢开始,只是看看我是否可以让它做一些事情....现在我的问题是,我需要另一个按钮旁边的按钮,说停止,因为我需要能够启动和停止烤面包机。 – Maria
我附上了我迄今为止制作的烤面包机的照片。 – Maria
好吧,我解决了它:D感谢您的反馈,虽然凯文:) – Maria