プログラミング実習(Java) グラフィクス処理とGUIプログラミング 講師:坂口 利裕(横浜市立大学) 2008.08.14~15 プログラミング実習(Java) グラフィクス処理とGUIプログラミング 講師:坂口 利裕(横浜市立大学) 坂口 利裕
第2日の目標 Javaによるアニメーションの表現方法を知る ファイル処理の概要を知る アプリケーションの作り方を知る 2008.08.14~15 第2日の目標 Javaによるアニメーションの表現方法を知る ファイル処理の概要を知る アプリケーションの作り方を知る 2008.08.14~15 プログラミング実習(Java) 坂口 利裕
第4章 Javaによるアニメーション表現 アニメーションの基礎 GUIによる制御 アニメーションの原理 マルチスレッド ダブルバッファ リスナでStart/Stopを制御し状態識別の変数に反映 runメソッドを状態識別の変数に応じた動作に変更 2008.08.14~15 プログラミング実習(Java)
アニメーションの表現 コマ 少しずつ変化する 絵を連続的に描画 残像に残る程度の時間間隔を空ける。 2008.08.14~15 プログラミング実習(Java)
マルチスレッド th = new Thread(this) ; th.start() ; init() 分流を作り分岐 start() run() 独自のループを構成 本流へ戻る イベント処理 リスナなど repaint() イベント待ちのループ (通常の流れ) update() paint() 2008.08.14~15 プログラミング実習(Java)
ダブルバッファ 計算を伴う場合遅れが目立つ 計算を伴っても遅れが目立たない 通常の処理 裏画面を使った処理 画面 画面 g.drawImage() 転送のみ 直接描画 paint(g) メソッド g.drawLine()など 裏画面 paint(g) メソッド backG.drawLine()など 2008.08.14~15 プログラミング実習(Java)
sample07.javaの改造ポイント init()メソッド start()メソッド run()メソッド paintBack()メソッド プログラムが呼び出される時に1度だけ実行 GUI部品の設定などを記述 start()メソッド init()処理後にシステムから1度だけ実行 スレッドの生成や裏画面の確保を記述 run()メソッド 全体の制御→[開始]ボタンが押された状態の時反復する内容→変数 t の更新を行う paintBack()メソッド アニメーションの1コマ分に相当する画像を描画→ t に依存して位置を決定→描画メソッドを用いた描画処理 2008.08.14~15 プログラミング実習(Java)
GUIの追加(具体名は考える) Buttonオブジェクトを追加して停止・実行できるように改良 リスナーを追加 オブジェクトを生成し画面上に登録 ボタンに対してリスナーを登録 イベント処理用メソッドを追加 boolean型変数isRunning を共通部分に準備 isRunningにてStart/Stopを制御 ButtonのラベルはsetLabel(“…”)メソッドで変更可能 run()内で isRunningがtrueの時に限り位置を更新 2008.08.14~15 プログラミング実習(Java)
GUIの追加(解答) Buttonオブジェクトを追加して停止・実行できるように改良 リスナー ActionListenerを追加 オブジェクトを生成し画面上に登録(add) ボタンに対してリスナーを登録(addActionListener) イベント処理用メソッドactionPerformedを追加 boolean型変数isRunning を共通部分に準備 isRunningにてStart/Stopを制御 ButtonのラベルはsetLabel(“…”)メソッドで変更可能 run()内で isRunningがtrueの時に限り位置を更新 2008.08.14~15 プログラミング実習(Java)
第5章 ファイル処理と総合演習 ファイルの入出力 画像ファイルの利用 総合演習 アプリケーション(ブラウザから独立した)プログラムの作成の要点 各自の興味に応じた復習・実習 総合質問 2008.08.14~15 プログラミング実習(Java)