2017-12-05 3 views
0

Also habe ich ein Array von Strings, die ich einzeln über die text()-Funktion auf dem Bildschirm anzeigen kann. Aber wenn ich dem Index hinzufüge, bleibt das vorherige Array-Element auf dem Bildschirm und ich kann nicht herausfinden, wie es entfernt wird. Ich möchte nur durch den Text auf dem Bildschirm scrollen und im Wesentlichen das nächste Array-Element ersetzen Sie es auf dem Bildschirm.Ausblenden zuvor angezeigter Array-Elemente

Dialog[] main = new Dialog[12]; 
int index; 

void setup() { 
    for (int index = 0; index < main.length; index++) { 
    main[index] = new Dialog(); 
} 

void draw() { 
    for (int index = 0; index < main.length; index++) { 
    main[index].readDialog(); 
    } 
} 

if (mousePressed) { 
    index++: 
} 

String[] textScroll = new String[12]; 


class Dialog { 
Dialog() { 
    textScroll[0] = "Welcome to the game!"; 
    textScroll[1] = "Are you ready to play?"; 
    etc... 
} 
void readDialog() { 
    text(textScroll[index], width/2, 100); 
    } 
} 
+0

Bitte bearbeiten Sie Ihre Frage und fügen Sie ein Tag für die von Ihnen verwendete Programmiersprache hinzu. – Dmitry

+0

Jetzt bitte formatieren Sie Ihren Code in etwas lesbares. – csmckelvey

+0

Ich muss die Verarbeitung verwenden, so dass es in einem vorgefertigten Fenster angezeigt wird, wenn ich die text() -Funktion verwende. Es ersetzt jedoch nicht die vorherige Zeichenfolge auf dem Bildschirm –

Antwort

1

Zunächst ist Ihre Syntax nicht gültig. Ihnen fehlen geschweifte Klammern, und Sie haben eine if-Anweisung außerhalb einer Funktion, die nicht gültig ist. Versuchen Sie, eine MCVE mit gültiger Syntax anstelle eines getrennten Codefragments zu senden.

Aber um Ihre allgemeine Frage zu beantworten, können Sie alte Rahmen löschen, indem Sie die background() Funktion aufrufen. Vergleichen Sie diesen Code:

<script src="https://cdnjs.cloudflare.com/ajax/libs/processing.js/1.6.6/processing.js"></script> 
 
<script type="application/processing"> 
 

 
void draw(){ 
 
    ellipse(mouseX, mouseY, 20, 20); 
 
} 
 

 
</script> 
 
<canvas> </canvas>

zu diesem Code:

<script src="https://cdnjs.cloudflare.com/ajax/libs/processing.js/1.6.6/processing.js"></script> 
 
<script type="application/processing"> 
 

 
void draw(){ 
 
    background(32); 
 
    ellipse(mouseX, mouseY, 20, 20); 
 
} 
 

 
</script> 
 
<canvas> </canvas>

Der erste Code zeichnet einen Kreis, wo die Maus ist, und es funktioniert nicht Löschen Sie alte Rahmen, damit Sie alle zuvor gezeichneten Kreise sehen können. Der zweite Code zeichnet einen Kreis, wo auch immer die Maus ist, aber er löscht alte Rahmen, so dass Sie nur den zuletzt gezeichneten Kreis sehen.

Sie möchten etwas ähnliches tun, um Ihre alten Frames zu löschen. Weitere Informationen finden Sie in the reference.

0

Verwenden Sie entweder background(); mit der Farbe, die Sie als Hintergrundfarbe als Argument verwenden möchten. Zum Beispiel ist background(0,0,100); blauer Hintergrund. Dadurch wird der Bildschirm am Anfang jeder draw() Schleife gelöscht. Aber wenn Sie nicht alles von Bildschirm jedes Mal, wenn Ihr Programm Schleife durch draw(), löschen möchten, verwenden Sie einfach eine rect() gleiche Farbe als Hintergrund und oben auf Ihrem Text, so dass es Ihre eigenen Text abdecken.

Verwandte Themen