2012-02-29 174 views
2

所以我有一個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

這是什麼語言? Java的? – jli 2012-02-29 22:37:41

+0

@jli http://processing.org/ – gary 2012-03-01 01:11:05

回答

0

This thread具有用於繪製僅當一個鍵被按下一個目的一些示例代碼。這與你想要的非常相似。

而不是keyPressedkeyReleased,您可以使用mouseClicked。在鼠標按鈕被按下然後釋放後被調用一次。使用布爾變量來存儲開/關狀態。在mouseClicked的內部,切換該布爾變量的值。

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); 
    } 
}