如何在保持相同中点的情况下使文本先增大然后缩小?

时间:2019-06-17 01:19:28

标签: processing

我正在做一个已故父亲节的礼物。我需要某种____ Mode(CENTER)作为文本。我正在尝试使一段文本扩展,然后收缩,然后再次扩展,然后再次收缩。但是,我尝试的内容似乎会不规则地增长和收缩,从而使文本四处移动,而不会居中。有没有一种简便的方法来处理文本? 代码:

textView.setText("SUM = " + String.valueOf(sum));

1 个答案:

答案 0 :(得分:2)

如果要保持文本居中,可以使用textAlign而不是不断修改textXtextY。在这种情况下,您只需删除这两个变量:

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具有有限的以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;
 }