2017-10-21 3 views
0

enter image description here Hej!Zweites Schaltflächenobjekt überschreibt das erste (Verarbeitung)

Ich bin neu in der Verarbeitung, es tut mir leid im Namen, wenn ich nicht klar genug in meinen Fragen bin.

Ich mache eine Art Toaster, der startet, wenn man auf einen Startknopf klickt und Brot auswirft, wenn man auf den Stopknopf klickt. Ich habe eine Button-Klasse erstellt und ein neues Button-Objekt in meinem Hauptprogramm erstellt. Zum Testen habe ich die Hintergrundfarbe von weiß auf rot geändert, wenn ich auf den Start-Button geklickt habe.

Der Start-Button funktioniert, aber jetzt versuche ich ein neues Button-Objekt zu erstellen (die STOP-Taste), aber wenn ich ein Stop-Button-Objekt mache, überschreibt es das Start-Button-Objekt). Zuerst habe ich es vielleicht, weil sie Startknopf waren Orte unter dem Stop-Button, aber das ist es nicht. Es dauert auch ewig, bis das Bild geladen ist, sobald ich es verarbeitet habe.

Ich hoffe, dass Sie mir helfen können :)

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-Klasse

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

Antwort

1

ich total nicht Ihren Code verstehen, weil man nie auf Klicks reagieren ist, und dir zeichne niemals den zweiten Knopf.

Wenn ich Sie wäre, würde ich break your problem down into smaller steps und diese Schritte nacheinander ausführen. Können Sie beispielsweise ein sehr einfaches Beispiel ausführen, bei dem eine einzelne Schaltfläche angezeigt wird, die eine Nachricht an die Konsole sendet, wenn Sie darauf klicken?

Von dort, fügen Sie vielleicht eine zweite Schaltfläche an einem anderen Ort, die eine andere Nachricht druckt, wenn Sie darauf klicken. Lass das perfekt funktionieren, bevor du weitermachst.

Wenn Sie das funktioniert, dann ändern Sie Ihre erste Skizze, um etwas wie die Hintergrundfarbe zu ändern, wenn Sie auf die Schaltfläche klicken. Schließlich können Sie alle oben genannten Elemente kombinieren, um die zweite Schaltfläche anzuzeigen, nachdem Sie auf die erste Schaltfläche geklickt haben.

Hinweis: Wahrscheinlich möchten Sie boolean Variablen verwenden, um darzustellen, welche Schaltfläche gerade angezeigt wird. Aber wie gesagt, am besten starten Sie einfacher und arbeiten sich in kleineren Schritten vorwärts.

+0

Das einzige, was ich bisher getan habe, ist einen Toaster und einen Startknopf zu zeichnen. Wenn Sie auf die Schaltfläche klicken, wird die Funktion "Leerzeit" aufgerufen. Der Hintergrund wird rot - ich habe dies nur getestet, um zu testen, ob es funktioniert. Ich möchte wirklich, dass es einen Timer startet, wenn die Leerlaufzeitfunktion aufgerufen wird. Aber ich wollte langsam anfangen und nur schauen, ob ich etwas machen könnte ... Mein Problem ist jetzt, dass ich neben dem stat Knopf einen anderen Knopf brauche, der sagt: "Stop", weil ich in der Lage sein muss, das zu starten und zu stoppen Toaster. – Maria

+0

Ich habe ein Bild des Toasters beigefügt, den ich bisher gemacht habe. – Maria

+0

Okay, ich habe es gelöst: D Danke für Feedback, obwohl Kevin :) – Maria

Verwandte Themen