0

徐々に色が変化するテキストを作ろうとしています。

私が今やったことは次のようなものです:

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と doで画像の色を変更するcolor fontColFill = toSet
  • void print(String toPrint, float x, float y)文字列のすべての文字が画像とともに印刷されるサイクルを実行します [つまり、私のフォントは MsPaint で描画されたフォント =P であり、 をprint置き換えますtext]。
  • ご存じのとおり、が と の間にcolor color(int value)ある場合は、グレー スケールの色を返します。value0255

delay(10)[バッファなどの] フラッシュを行うだけで十分だと期待して試してみましたが、何もありません!

プログラムが現在行っていることは、最後の画面をレンダリングするだけなので、表示されるのは D= と印刷された白い文字列だけです

ヒントはありますか?

PSスムーズな問題のために、フォントとして画像を使用することを選択しました。引数としてのPPS 解析int iは解決策ですが、莫大なコストがかかります!

4

1 に答える 1

1

これは、 draw() が各ループの最後にのみ画像をレンダリングするためだと思います。したがって、 for ループは完全に実行され、色を 255 に設定してから、実行が描画に戻り、画像をレンダリングします。すでに白です。if でそれを行う必要があり、それは機能します。グローバル変数を使用して例を設定しましたが、ニーズに合わせて調整できます。また、同じ理由で、プログラムがハングアップするだけなので、遅延も避ける必要があります。この記事フォーム 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);
}
于 2013-05-23T23:44:36.743 に答える