我正在做一个已故父亲节的礼物。我需要某种____ Mode(CENTER)作为文本。我正在尝试使一段文本扩展,然后收缩,然后再次扩展,然后再次收缩。但是,我尝试的内容似乎会不规则地增长和收缩,从而使文本四处移动,而不会居中。有没有一种简便的方法来处理文本? 代码:
textView.setText("SUM = " + String.valueOf(sum));
答案 0 :(得分:2)
如果要保持文本居中,可以使用textAlign而不是不断修改textX
和textY
。在这种情况下,您只需删除这两个变量:
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;
}