我正试图让文字逐渐变色。
我现在所做的是这样的事情:
void printDaString(){
for(int i = 128; i < 255; i ++){
fontFill(color(i));
print("This is da string!", x, y);
delay(10);
}
}
void fontFill(color toSet)
使用toSet
更改图片颜色并执行color fontColFill = toSet
void print(String toPrint, float x, float y)
执行一个循环,其中字符串的每个字母都打印有一张图像[换句话说,我的字体是MsPaint绘制的字体= P而print
替换{{1} }]。text
如果color color(int value)
介于value
和0
之间,则会返回灰色缩放颜色。我尝试使用255
希望能够刷新[缓冲区或类似的东西],但什么都没有!
程序现在做的只是渲染最后一个屏幕,所以我看到的只是一个打印的白色字符串D =
任何提示?
P.S。由于平滑问题,我选择使用图像作为字体。
P.P.S.解析delay(10)
作为参数将是一个解决方案,但这将是一个巨大的成本!
答案 0 :(得分:1)
我认为这是因为draw()仅在每个循环结束时渲染图像。所以你的for循环完全执行,将颜色设置为255,然后执行返回绘制以继续渲染图像,已经是白色。你需要用if做它,它会工作。我使用全局变量设置了一个示例,但您可以根据自己的需要进行调整。还要避免延迟,出于同样的原因,它只会挂起程序。您可以查看this article表格wiki
int i = 128;
void draw() {
printDaString();
}
void printDaString() {
if (i < 255) {
fontFill(color(i));
print(i);
i++;
}
}
void fontFill(color c) {
fill(c);
ellipse(width/2, height/2, 30, 30);
}
甚至更简单:
int i = 128;
void draw() {
i = i<255? i+=1:128;
fontFill(i);
}
void fontFill(int c) {
fill(c);
noStroke();
ellipse(width/2, height/2, 30, 30);
}