如何在每个字母上设置一次随机文本大小? (加工)

how to set random text size on each letter once? (processing)

如何为展开的每个字母设置随机大小?我希望它们中的每一个都有不同的随机大小,但我真的不知道把 textSize (random(10, 20)); 放在哪里,因为如果我把它放在 draw 下,它只会一遍又一遍地循环,每个框架每个字母的文本大小改变了,但是当我把它放在设置下时,它只是改变了所有字母的大小。

String message = "Alice fell into the rabbit hole";
int x =  130;
int y = 90;

Letter[] letters;

void setup() {
  size(260, 200);
  letters = new Letter[message.length()];
  textSize (random(10, 20));

  for (int i = 0; i < message.length(); i++) { 
    letters[i] = new Letter(x, y, message.charAt(i));
    //x += textWidth(message.charAt(i));
  }
}

void draw() { 
  background(255);
  for (int i = 0; i < letters.length; i++) { 
    letters[i].display(); 
    letters[i].shake();
  }
}

class Letter {
  char letter;
  float x, y;

  Letter (float x, float y, char letter) {
    this.x = x;
    this.y = y;
    this.letter = letter;
  }

  void display() {
    fill(0);
    textAlign(CENTER, CENTER);
    text(letter, x, y);
  }

  void shake() {
    x += random(-2, 2);
    y += random(-2, 2);
  }
}

您的 Letter class 封装了有关特定字母的所有内容。因此,如果您想要每个字母的随机大小,那么您可以将该大小存储在 Letter class.

如果您希望单个字母的大小在程序的整个生命周期内都相同,那么您可以在构造函数中设置该大小。

然后您将在绘制字母之前在 display() 函数中使用该大小。