处理生成随机数量的文本

时间:2014-03-05 19:43:46

标签: random processing draw

我正在尝试使用处理生成一些随机文本,我想要的是每次按下鼠标时都会生成新文本并显示在屏幕上。截至目前,由于循环draw()以及解决此问题的方法,文本只是生成而不是被删除?

int click = 0;
void setup() {
String alfabet = "abcdefghijklmnopqrstuvw";
size(1000,1000);
textSize(64);
textAlign(CENTER);

}
void draw() {
background(0);
if(click==1) {
click = 0;
genereren();
}
}
void genereren() {
String alfabet = "abcdefghijklmnopqrstuvw";
int x = 10;
for(int i = 0; i < 15; i = i+1) {
float r = random(24);
if(r < 1) {
  r = r+1;
}
int d = int(r);
String EersteLetter = alfabet.substring(d-1,d);
if ( i <= 4) {
text(EersteLetter, 60+(x*3*i), 80);  
} 
if ( i <= 8) {
text(EersteLetter, 60+(x*3*i), 120);  
}
if ( i <= 12) {
text(EersteLetter, 60+(x*3*i), 160);  
}
if ( i <= 16) {
text(EersteLetter, 60+(x*3*i), 200);  
}
}
}
void mouseClicked() {
  click = 1;
}

2 个答案:

答案 0 :(得分:0)

试试这个例子,如果你单击鼠标它会显示与否,如果你按住鼠标按钮就会冻结当前文本。

boolean click = false;
void setup() {
  String alfabet = "abcdefghijklmnopqrstuvw";
  size(1000, 1000);
  textSize(64);
  textAlign(CENTER);
  background(0);
}
void draw() {
  if (click) {
    genereren();
  }
}

void mousePressed() {
  if (mouseButton == LEFT) {
    genereren();
  }
}

void genereren() {
  background(0);
  String alfabet = "abcdefghijklmnopqrstuvw";
  int x = 10;
  for (int i = 0; i < 15; i = i+1) {
    float r = random(24);
    if (r < 1) {
      r = r+1;
    }
    int d = int(r);
    String EersteLetter = alfabet.substring(d-1, d);
    if ( i <= 4) {
      text(EersteLetter, 60+(x*3*i), 80);
    } 
    if ( i <= 8) {
      text(EersteLetter, 60+(x*3*i), 120);
    }
    if ( i <= 12) {
      text(EersteLetter, 60+(x*3*i), 160);
    }
    if ( i <= 16) {
      text(EersteLetter, 60+(x*3*i), 200);
    }
  }
}
void mouseReleased() {
  clear();
}
void mouseClicked() {
  click=!click;
}

答案 1 :(得分:0)

最简单的方法就是不使用“background(0);”,这样文本就永远存在。然后你可以添加一个按钮来运行一个方法,用于“background(0);”删除所有文字。