如何使文本增长然后缩小,同时仍保持相同的中点



我正在做一个迟到的父亲节礼物。我需要某种文本____Mode(中心(。我试图让一段文本在循环中扩展,然后缩小,然后再次扩展,然后再次收缩。然而,我尝试的内容似乎在空间上增长和缩小,使文本四处移动,而不是保持中心。有没有一种简单的方法可以用文本做到这一点?法典:

String msg = "Happy Father's Day";
int ts = 50;
float textX = 165;
float textY = 312.5;
float tSize = 50;
boolean flip;
void setup() {
  size(800, 600);
}
void draw() {
  background(0);
  fill(255);
  textSize(tSize);
  text(msg, textX, textY);
  if (flip == false) {
    tSize += 0.5;
    textX -= 1;
    textY -= 1;
  } else if (flip == true) {
    tSize -= 0.5;
    textX += 1;
    textY += 1;
  }
  if (tSize == 35) flip = false;
  else if (tSize == 65) flip = true;
}
与其

不断修改textXtextY,如果你想保持文本居中,你可以使用 textAlign。在这种情况下,您可以简单地删除这两个变量:

String msg = "Happy Father's Day";
int ts = 50;
float tSize = 50;
boolean flip;
void setup() {
  size(800, 600);
  textAlign(CENTER,CENTER);
}
void draw() {
  background(0);
  fill(255);
  textSize(tSize);
  text(msg, width/2, height/2);
  if (!flip) {
    tSize += 0.5;
  } else {
    tSize -= 0.5;
  }
  if (tSize == 35) flip = false;
  if (tSize == 65) flip = true;
 }

您可以通过将flip设置为始终为 1 或 -1 而不是布尔值的数字来简化代码。这减少了所需的条件逻辑量。还要注意下面的代码如何将相等比较(==(替换为不等式(<=>=(。像 tSize == 65 这样的东西确实适用于大小为 0.5 的步骤(因为0.5具有有限的 base-2 展开(,但如果您0.5更改为例如 0.1尝试使其变慢,由于浮点舍入误差,65值将被完全跳过。由于tSize被声明为浮点数,因此使用==是自找麻烦。

String msg = "Happy Father's Day";
int ts = 50;
float tSize = 50;
float flip = -1;
void setup() {
  size(800, 600);
  textAlign(CENTER,CENTER);
}
void draw() {
  background(0);
  fill(255);
  textSize(tSize);
  text(msg, width/2, height/2);
  tSize += flip * 0.5;
  if (tSize <= 35 || tSize >= 65 ) flip *= -1;
 }

相关内容

最新更新