- 654 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 11:10:30 ]
- >>642
中にコメントの付いていない paint() と mouseClicked() が肝心な部分だなw 初期表示時、paint() では n=0 の為に背景のみが描画される。 任意の位置をクリックすると mouseClicked() が呼ばれ、座標を配列x[],y[] の p の位置に保存、 p を移動させ n を最大 5 までの間増加させて、repaint() により paint() を実行させる。 クリック後の paint() では背景描画後、n が 1 以上になっているので、x[],y[] に保存されている 各位置(から-22した位置を左上とした位置)に n 個((x[0],y[0])〜(x[n-1],y[n-1]))顔を描画する。 ミソは p の移動の p=(p+1)%5 か。これによって p は 0,1,2,3,4,0,1,2,3,4,0,1,… とクリックする度に 0〜4 の範囲で循環するため、5回以上クリックした場合は最後にクリックした位置の x[],y[] が上書きされることになるので、顔の描画も最後の位置が最新の位置に入れ替わる形になる。 但し描画の順は常に x[0],y[0] からなので、顔画像の重なりはクリック順と関係ない。
|

|