Ich arbeite ein Projekt, das Bildschirme beteiligt. Ich möchte in der Lage sein, die Zifferntasten zu den Bildschirmen zu verwenden, die den Benutzer in einen interaktiven Teil der Skizze bringen.Wie erhält man eine Skizze, die in einer anderen Skizze funktioniert, die Bildschirme verwendet?
Ich fing an, an einem der interaktiven Teile des Programms in einer separaten Skizze zu arbeiten. Hier ist die Skizze:
float x, y, r, g, b, radius;
int timer;
void setup() {
size(500, 500);
background(255);
noStroke();
smooth();
}
void draw() {
Zon();
}
void Zon(){
// use frameCount to move x, use modulo to keep it within bounds
x = frameCount % width;
// use millis() and a timer to change the y every 2 seconds
if (millis() - timer >= 8000) {
y = random(height);
timer = millis();
}
// use frameCount and noise to change the red color component
r = noise(frameCount * 0.01) * 255;
// use frameCount and modulo to change the green color component
g = frameCount % 1;
// use frameCount and noise to change the blue color component
b = 255 - noise(1 + frameCount * 0.025) * 255;
// use frameCount and noise to change the radius
radius = noise(frameCount * 0.01) * mouseX;
color c = color(r, g, b);
fill(c);
ellipse(x, y, radius, radius);
}
Dies war der Code für die separate Skizze. Ich möchte diese Skizze in mein eigentliches Projekt einfügen können, aber es funktioniert nicht so, wie es in der separaten Skizze funktioniert. Kann mir jemand erklären, warum das so ist?
Ich möchte, dass es einen weißen Hintergrund gibt und die Ellipse sich über den Bildschirm bewegt und eine Spur hinterlässt. Funktioniert es nicht, weil der Hintergrund immer wieder durchläuft und dabei die Spur löscht?
Wenn ich den Hintergrund entfernen (255); es ist eine Art von Arbeit, außer dass es auf dem Menübildschirm läuft, was ich nicht will.
Hier die eigentliche Projektcode:
final int stateMenu = 0;
final int GreenBox = 3;
int state = stateMenu;
float x, y, r, g, b, radius;
int timer;
PFont font;
PFont Amatic;
void setup()
{
size(800, 700);
smooth();
font = createFont("ARCARTER-78.vlw", 14);
textFont(font);
//Amatic = createFont("Amatic-Bold.ttf",60);
//textFont(Amatic);
frameRate(15);
}
void draw()
{
// the main routine. It handels the states.
// runs again and again
switch (state) {
case stateMenu:
showMenu();
break;
case GreenBox:
handleGreenBox();
break;
default:
println ("Unknown state (in draw) "
+ state
+ " ++++++++++++++++++++++");
}
}
void keyPressed() {
// keyboard. Also different depending on the state.
switch (state) {
case stateMenu:
keyPressedForStateMenu();
break;
case GreenBox:
keyPressedForGreenBox();
}
}
void keyPressedForStateMenu() {
switch(key){
case '3':
state = GreenBox;
break;
default:
// do nothing
break;
}
}
void keyPressedForGreenBox(){
switch(key) {
default:
state = stateMenu;
break;
}
}
void showMenu() {
background(255);
fill(0);
textSize(45);
//textFont(Amatic);
text(" Music Box ", 330, 250, 3);
textSize(14);
text("Press 3 for Green", 350, 350);
}
void handleGreenBox() {
Zon();
}
void Zon(){
background(255);
noStroke();
smooth();
// use frameCount to move x, use modulo to keep it within bounds
x = frameCount % width;
// use millis() and a timer to change the y every 2 seconds
if (millis() - timer >= 8000) {
y = random(height);
timer = millis();
}
// use frameCount and noise to change the red color component
r = noise(frameCount * 0.01) * 255;
// use frameCount and modulo to change the green color component
g = frameCount % 1;
// use frameCount and noise to change the blue color component
b = 255 - noise(1 + frameCount * 0.025) * 255;
// use frameCount and noise to change the radius
radius = noise(frameCount * 0.01) * mouseX;
color c = color(r, g, b);
fill(c);
ellipse(x, y, radius, radius);
}
Kann jemand mir helfen, dieses Problem zu beheben, wenden Sie sich bitte?
Danke, das viel helfen! – Lubidia13