2017-12-05 3 views
0

したがって、text()関数を使用して、一度に1つずつ画面に表示するストリングの配列があります。しかし、インデックスに追加すると、以前の配列要素は画面上にとどまり、削除方法を理解できません。画面上のテキストをスクロールして、基本的には次の配列要素を画面上に置き換えます。以前に表示された配列要素を非表示にする

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

質問を編集し、使用しているプログラミング言語のタグを追加してください。 – Dmitry

+0

コードを読みやすいものにフォーマットしてください。 – csmckelvey

+0

私は処理を使用しなければならないので、text()関数を使用するとpremadeウィンドウに表示されます。しかし、それは画面上の前の文字列を置き換えません –

答えて

1

まず、構文が無効です。中括弧がないので、無効な関数の外にifステートメントがあります。コードの接続が解除されたスニペットではなく、有効な構文でMCVEを投稿してください。

しかし、一般的な質問に答えるには、background()関数を呼び出すことで古いフレームを消去することができます。このコードに

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

:このコードを比較

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

最初のコードは、マウスがある場所に円を描画し、そうでありません古いフレームを消去して、以前に描いたすべての円を見ることができます。 2番目のコードは、マウスがどこにあっても円を描画しますが、最後に描画された円だけが表示されるように古いフレームをクリアします。

あなたは古いフレームをクリアするために同様のことをしたいと思います。詳細はthe referenceにあります。

0

background();を、引数として背景色として使用してください。たとえば、background(0,0,100);は青色の背景です。これにより、各draw()ループの開始時に画面が消去されます。しかし、あなたのプログラムループのたびに画面からすべてをクリアしたくない場合は、draw()までrect()と背景と同じ色を使用し、テキストの上にあなたの前のテキストをカバーするようにしてください。

関連する問題