• 締切済み

Javaで簡単なアニメーションを作りたい

Javaで簡単なアニメーションを作りたいと思っています。 具体的にはバネの単身動や、サインカーブを描きたいと思います。 Javaの基本的なことについては少しは知っています。 このような勉強がホームページもしくは参考書がありましたら教えてください。 お願いします。

みんなの回答

  • ssr-y6
  • ベストアンサー率71% (5/7)
回答No.3

 以下は、ばねの単振動(物理的には?..)のアニメアプリのサンプルです。 import java.awt.*; import java.awt.image.*; import java.awt.event.*; import java.util.*; public class bane extends Frame { VolatileImage OSI = null; Graphics2D G; double T = 0.0; int X[]; public bane() { super("BANE"); setSize(220, 450); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); }; }); setVisible(true); OSI = createVolatileImage(200, 400); G = (Graphics2D)OSI.getGraphics(); G.setBackground(Color.WHITE); G.setColor(Color.BLACK); G.clearRect(0, 0, 200, 25); G.drawLine(100, 0, 100, 25); X = new int[50]; for (int i = 0; i < 50; i ++) X[i] = (int)(Math.sin(2 * Math.PI / 50.0 * (double)i) * 100.0 + 100.0); Timer t = new Timer(); t.schedule(new animetask(), 1000, 100); }; public void paint(Graphics g) { if (OSI != null) g.drawImage(OSI, 10, 0, this); }; public void update(Graphics g) { paint(g); }; class animetask extends TimerTask { public void run() { double w = Math.sin(T) * 100.0 + 200.0; G.clearRect(0, 25, 200, 375); for (int i = 1; i < 301; i ++) G.drawLine(X[(i - 1) % 50], (int)((double)(i - 1) / 300.0 * w) + 25, X[i % 50], (int)((double)i / 300.0 * w) + 25); G.drawLine(100, (int)w + 25, 100, (int)w + 50); G.drawOval(75, (int)w + 50, 50, 50); T += Math.PI / 10.0; repaint(); }; } public static void main(String args[]) { new bane(); }; }

  • _ranco_
  • ベストアンサー率58% (126/214)
回答No.2

javax.swing.Timerクラスを使うと簡単です。 仮に描画パラメータがたった一つだとすると、 x = ......; //パラメータを更新 repaint(); //このアニメパネルをrepaint これだけです。フレームレート(何ミリ秒間隔でアニメるか)は、Timerをnewするとき、これまた単純に指定します。

回答No.1

マルチスレッド、ダブルバッファ等の意味、記述が分からないのであれば、 ほとんどの基本には載っていると思います。 バネの単身動や、サインカーブについての、 物理的、数学的な基本知識があれば、そのまま記述するだけです。 バネの物理的な動きについては、別途で勉強するしかないと思います。 それでもダメなら、バネの物理演算に対する質問として具体例を書き、 物理のコーナーでお尋ねください。 このサイトのアニメーションまでを読むだけでも、 Javaサイドの基本は全て分かると思います。↓ http://homepage.mac.com/tuyano/JavaTutor/index.html 理解できなかったら、アニメーションというのは、 ゲーム作りを目指すものであれば、さけて通れない技術ですので、 そういったタイトルの初心者用の参考書を探すのがいいと思います。

関連するQ&A