隐藏先前显示的数组元素

时间:2017-12-05 20:41:42

标签: java arrays string processing

所以,我有一个字符串数组,我通过text()函数一次一个地显示在屏幕上。但是,当我添加到索引时,前一个数组元素保持在屏幕上,我无法弄清楚如何删除它。我只是想滚动屏幕上的文本,基本上让下一个数组元素替换它在屏幕上。

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

2 个答案:

答案 0 :(得分:1)

首先,您的语法无效。您缺少大括号,并且您在函数外部有一个if语句,该语句无效。请尝试使用有效语法发布MCVE,而不是断开连接的代码段。

但是要回答您的一般问题,您可以通过调用background()函数清除旧框架。比较以下代码:

&#13;
&#13;
<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>
&#13;
&#13;
&#13;

到此代码:

&#13;
&#13;
<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>
&#13;
&#13;
&#13;

第一个代码在鼠标所在的位置绘制一个圆圈,并且它不会清除旧的帧,因此您可以看到所有先前绘制的圆圈。第二个代码在鼠标所在的位置绘制一个圆圈,但它会清除旧的帧,因此您只能看到最近绘制的圆圈。

您想要做类似的事情来清除旧框架。更多信息可以在the reference找到。

答案 1 :(得分:0)

使用您想要的颜色background();作为背景颜色作为参数。例如,background(0,0,100);是蓝色背景。这将在每个draw()循环开始时清除屏幕。但是,如果您不希望每次程序循环draw()时都清除屏幕上的所有内容,只需使用rect()相同的颜色作为背景并在文本顶部,以便它覆盖您的私密性文本。