所以我有一个画一个圆圈的ON-OFF按钮。我遇到的麻烦是ON OFF状态是随机的,这取决于我按下按钮多长时间。我想这是由于draw()函数,它还以帧速率及时循环我的按钮功能。我想要的是按下按钮一次打开按钮再次按下时关闭按钮,无论按下按钮多长时间。这是代码。
else if (circle4.pressed()) {
println("button 4 is pressed");
if(drawCirclesPrimary){
drawCirclesPrimary = false;
}
else{
drawCirclesPrimary = true;
}
println("drawCirclesPrimary"+drawCirclesPrimary);
}
答案 0 :(得分:1)
我建议在processing.org上查看Buttons tutorial。以下代码是教程中包含的内容的子集(但是,您需要查看教程中的所有代码)。评论是我的。
void setup() {
// Create instances of your button(s)
}
void draw() {
// Draw buttons, update cursor position, check if buttons have been clicked.
}
// Provides the overRect() method (among others).
class Button
{
// If the cursor is placed within the footprint of the button, return true.
boolean overRect(int x, int y, int width, int height)
{
if (mouseX >= x && mouseX <= x+width && mouseY >= y && mouseY <= y+height) {
return true;
}
else {
return false;
}
}
}
class RectButton extends Button
{
// Create a rectangle button with these size/color attributes.
RectButton(int ix, int iy, int isize, color icolor, color ihighlight)
{
x = ix;
y = iy;
size = isize;
basecolor = icolor;
highlightcolor = ihighlight;
currentcolor = basecolor;
}
// Determines whether the cursor is over the button.
boolean over()
{
if( overRect(x, y, size, size) ) {
over = true;
return true;
}
else {
over = false;
return false;
}
}
// Draws the rectangle button into your sketch.
void display()
{
stroke(255);
fill(currentcolor);
rect(x, y, size, size);
}
}
答案 1 :(得分:0)
This thread有一些示例代码,用于仅在按下某个键时绘制对象。这与你想要的非常相似。
您可以使用keyPressed
而不是keyReleased
和mouseClicked
。在按下鼠标按钮然后释放后调用一次。使用布尔变量来存储开/关状态。在mouseClicked
内,切换该布尔变量的值。