動くボールを表現する

動くボールを表現する その3

赤いボールが動くことはできました。
例によって、スレッドを起動して、細切れ状態で動かしています。
ボールを1個だけ動かしたのでは、なんだかつまらないので、メーターのように残像みたいになるように、ボールの配列を作って、色を変えてみました。 赤い色の配列を用意します。DrawGraphiに


Color[] colors = {
			new Color(255, 0, 0), new Color(210, 0, 0), new Color(170, 0, 0), 
			new Color(130,0,0), new Color(90,0,0), new Color(50, 0, 0), new Color(40, 0, 0)
	};

RGBのRの部分だけ変えた配列を用意しています。
これをDrawGraphiのdrawBall()のなかで


for (int i = colors.length - 1; i > 0; i--) {
				//draw circles
				g2.setColor(colors[i]);
				g2.fill(new Ellipse2D.Double(center_x+aa*Math.cos(xy[i]*rad)-radi/2,center_y-bb*Math.sin(xy[i]*rad)-radi
						, radi, radi));	
				xy[i] = xy[i-1];
			}
と薄い赤のボールから順番に描いています。そして位置の配列xy[]は、末尾を消して、新しいものから格納するようにシフトしています。面倒な処理です。



 実行すると右図のようになります。





今回のプログラムは、DrawGraphiのいち部分を変更しただけですので、変更したファイルのみ添付します。
スマートじゃないし、素人丸出しですけどね。