色彩推移技術
色彩推移を担うフェードインとフェードアウトの技術は先に説明したスクロールと同じく重要なものとなっています。
色彩推移技術とは、その名の通り色彩を指定する部分を動的に変化させるものです。iαppliではGraphics.setColor()メソッドを操作します。
ここで扱われている色彩値はRGB値と呼ばれるもので、ディスプレイを表現する色としてはメジャーな手段です。
赤 ―Red― と緑 ―Green― 、そして青 ―Blue― 各色をそれぞれ0〜255の範囲で表現します。
RGB値 0〜255
つまり組み合わせとしては2563=16777216パターンあります。
このRGB値を動的に変化させる事で色彩推移を実現します。
講義の例では3値共一様に変化させていましたが、1つの値だけを個別に変化させる事や、それぞれ違う変数を参照して別々に変動させる事も勿論可能です。
public void paint(Graphics g) {
  g.lock();
  g.setColor(Graphics.getColorOfRGB(0x00, 0x00, 0x00));
  g.fillRect(0, 0, 240, 240);
  if (time < 256) {
    g.setColor(Graphics.getColorOfRGB(time, 0x00, 0x00));
    g.drawString("色", 10, 30);
    g.setColor(Graphics.getColorOfRGB(0x00, time, 0x00));
    g.drawString("彩", 30, 30);
    g.setColor(Graphics.getColorOfRGB(0x00, 0x00, time));
    g.drawString("推", 50, 30);
    g.setColor(Graphics.getColorOfRGB(time, time, 0x00));
    g.drawString("移", 70, 30);
    g.setColor(Graphics.getColorOfRGB(0x00, time, time));
    g.drawString("t", 90, 30);
    g.setColor(Graphics.getColorOfRGB(time, 0x00, time));
    g.drawString("i", 110, 30);
    g.setColor(Graphics.getColorOfRGB(time, time, time));
    g.drawString("m", 130, 30);
    g.setColor(Graphics.getColorOfRGB(time, time / 2, 0x00));
    g.drawString("e", 150, 30);
    g.setColor(Graphics.getColorOfRGB(time / 2, time, 0x00));
    g.drawString("参", 170, 30);
    g.setColor(Graphics.getColorOfRGB(time / 2, time / 2, 0x00));
    g.drawString("照", 190, 30);
  }
  g.unlock(true);
}
このプログラムは色々な推移を実現したものです。総てtimeの値を参照した色彩推移なので、paint()メソッドだけ上記のものに書き換えて下さい。
RGB値の範囲
さて、このプログラムの太字で書いてある部分ですが、このif文はRGB値が255を超えない様にしたものです。
もし超えてしまうと以下のエラーが投げられ、iαppliは強制的に終了します。
java.lang.IllegalArgumentException: Invalid RGB value
投げられたエラーをきちんとcatchしてやれば対処自体は出来るのですが、これから沢山使うであろうGraphics.setColor()1つひとつに態々try〜catchを設けるのは非常に骨が折れます。
このエラーは少し注意すれば容易に避けられるので、Graphics.setColor()メソッドを使う際に心掛けておけば良いでしょう。
inserted by FC2 system