所以,我有一个字符串数组,我通过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);
}
}
答案 0 :(得分: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>
&#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;
第一个代码在鼠标所在的位置绘制一个圆圈,并且它不会清除旧的帧,因此您可以看到所有先前绘制的圆圈。第二个代码在鼠标所在的位置绘制一个圆圈,但它会清除旧的帧,因此您只能看到最近绘制的圆圈。
您想要做类似的事情来清除旧框架。更多信息可以在the reference找到。
答案 1 :(得分:0)
使用您想要的颜色background();
作为背景颜色作为参数。例如,background(0,0,100);
是蓝色背景。这将在每个draw()
循环开始时清除屏幕。但是,如果您不希望每次程序循环draw()
时都清除屏幕上的所有内容,只需使用rect()
相同的颜色作为背景并在文本顶部,以便它覆盖您的私密性文本。