- ベストアンサー
【JavaApplet】アニメーションの応用について
こんにちわ。プロミラミングの初心者です。簡単なゲームを作ってみようかと思ったのですが、思っていたより難しく手間取っています。 8枚の絵をループさせ、クリックしたところで止まった絵ごとに コメントを変えるというものです。 どういう部品を使えばいいかというのはなんとなくわかるのですが、 基本がまだハッキリしていないので、なかなか進みません。 Javaにお詳しい方、力を貸して頂けないでしょうか? *JavaScriptのほうへ間違えて質問してしまったので、そちらは後で削除します。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
私も最近JavaAppletを作って遊んでいるくらいの初心者ですが… まずメインクラスに「ループしている/していない」のフラグとなるbooleanのフィールドを作ります。 次に画像をループさせる処理をスレッドで処理するように記述します。 それからクリックを検知できるようにMouseListenerを実装します。 そして実装したmouseClickedメソッドでループする・しないのフラグを切り替えれば良いと思います。 ちょっと日本語の説明だと怪しいので、実例を書いてみると // 要点だけで、省略が多いです。 // アプレットを継承し、スレッドが利用できるようにRunnable、マウス検知ができるようにMouseListenerを実装 public class Animation extends Applet implements Runnable, MouseListener{ Thread thread = null; boolean isLoop; int draw_num; // 描画する画像の番号 // 初期化処理 public void init(){ addMouseListener(this); // MouseListenerとして登録 isLoop = true; draw_num = 0; } public void paint(Graphics g){ // アレコレ実際に描画する処理 // 画像の描画とisLoopがfalseのときのみdraw_numに対応したメッセージを表示する、など } // スレッドとして実行する処理 public void run(){ while(thread != null){ // ループ状態だったら入れ替えていく if(isLoop){ draw_num++; if(draw_num >= 8){ draw_num = 0; } repaint(); // 再描画 } try{ Thread.Sleep(100); } catch(Exception e){} // 例外処理は飛ばしています } } void mouseClicked(MouseEvent e){ if(isLoop){ isLoop = false; } else{ isLoop = true; } } // mouseClicked以外は空のメソッドとして実装します void mouseEntered(MouseEvent e){} void mouseExited(MouseEvent e){} void mousePressed(MouseEvent e){} void mouseReleased(MouseEvent e){} } こんな感じでどうでしょうか?
お礼
shibamuさん、丁寧な解説感謝いたします! このソースを参考させて頂きながら、プログラムを組みました。 後はクリック後にイベント?を起こすだけです。 また質問させて頂くこともあるかもしれませんが、 本当にありがとうございました<(_ _)>