誰かがコンポーネントの段階的な色の変化を手伝ってもらえますか?色を変えて欲しい
new Color(255,0,0)
に
new Color(0,0,0)
タイマーを使ってさまざまなバリエーションを試しましたが、行き詰まりました。そしてところで、タイマーでこれを行うのは正しい方法ですか?
前もって感謝します!
これらの線に沿った何か:
Color before = new Color(255,0,0);
Color after = new Color(0,0,0);
Color current = before;
int maxtime = 1000;
int step = 0;
public void step()
{
if(step == maxtime)
return;
step++;
double percentComplete = step/maxtime;
double percentGone = 1-percentComplete;
int red = (int)(before.getRed()*percentGone+after.getRed()*percentComplete);
int green = (int)(before.getGreen()*percentGone+after.getGreen()*percentComplete);
int blue = (int)(before.getBlue()*percentGone+after.getBlue()*percentComplete);
int alpha = (int)(before.getAlpha()*percentGone+after.getAlpha()*percentComplete);
current = new Color(red, green, blue, alpha);
//set component's color to current
}
赤、緑、青が255を超えないようにするために、いくつかのチェックを行う必要があるかもしれませんが、まだわかりません。
(この関数は、色を変更するコンポーネントに属している必要があります。タイマーティックごとにこれを呼び出す必要があります)
クエストの代わりにJLayerを使用することを検討してください:-)