缓冲?无法打印“实时”字符串

时间:2013-05-23 21:54:05

标签: image buffer processing

我正试图让文字逐渐变色。

我现在所做的是这样的事情:

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)介于value0之间,则会返回灰色缩放颜色。

我尝试使用255希望能够刷新[缓冲区或类似的东西],但什么都没有!

程序现在做的只是渲染最后一个屏幕,所以我看到的只是一个打印的白色字符串D =

任何提示?

P.S。由于平滑问题,我选择使用图像作为字体。 P.P.S.解析delay(10)作为参数将是一个解决方案,但这将是一个巨大的成本!

1 个答案:

答案 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);
}