Warum funktioniert mein Processing-Code nicht?
Hallo.
Ich habe versucht, Processing mit Tutorials zu lernen. Aber jetzt bin ich an einem Punkt, an dem ich nicht mehr weiterkomme. In meinem Code ist ein Fehler und ich weiß nicht, wo. Zumindest ist der Kreis nicht sichtbar. Alles ist nur blau.
Das ist der Code:
PGraphics ha;
PGraphics jh;
float x;
void setup() {
size(800, 600);
background(0, 0, 255);
ha = createGraphics(screenWidth, screenHeight);
jh = createGraphics(screenWidth, screenHeight);
x = 200;
}
void draw() {
ha.beginDraw();
ha.ellipse(x, 200, 50, 50);
ha.endDraw();
jh.beginDraw();
jh.ellipse(200, 200, 500, 500);
jh.endDraw();
ha.mask(jh.get());
image(ha, 0, 0);
x++;
}
Früher, als ich nur eine PGraphics-Instanz hatte, funktionierte es:
PGraphics ha;
float x;
void setup() {
size(screenWidth, screenHeight);
ha = createGraphics(screenWidth, screenHeight);
x = 200;
}
void draw() {
background(0, 0, 255);
ha.beginDraw();
ha.background(0, 0, 255);
ha.ellipse(x, 200, 50, 50);
ha.endDraw();
image(ha, 0, 0)
x++
}
Hat jemand eine Idee, was ich ändern muss?
2 Antworten
Dir fehlt in beiden Fällen eine Definition von screenWidth und screenHeight. Ihre Werte sollten jeweils größer als 500 sein, damit die beiden Kreise aus ha und jh jeweils hineinpassen.
Um die Schlierenbildung bei der Bewegung des weißen Kreises zu unterbinden, sollte der Hintergrund von ha (vor dem Zeichnen des Kreises) immer wieder neu gemalt werden.
ha.background(0, 0, 0);
Dein zweiter Code beinhaltet auch noch andere Syntaxfehler (fehlende Semikolons in den letzten beiden Zeilen).
Es erscheint nicht so, als hättest du deinen tatsächlichen Programmcode geteilt, denn sowohl die fehlenden Variablendefinitionen (eine Deklaration genügt hier nicht, denn size erwartet größere Werte als 0) und die Syntaxfehler führen in jedem Fall zu deutlichen Fehlern (Compilerfehler / Programmabsturz).
Du hast da mehrere Fehler in deinem Code.
Unter anderem nutzt du Variablen, die nicht exiszieren. Z.B für die Fenstergröße.
Ausserdem zeichnest du immer wieder neue Elemente, die sich überlagern. Das kann natürlich zu Fehlern führen.