アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (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();
};

}
    • good
    • 0

javax.swing.Timerクラスを使うと簡単です。



仮に描画パラメータがたった一つだとすると、

x = ......; //パラメータを更新
repaint(); //このアニメパネルをrepaint

これだけです。フレームレート(何ミリ秒間隔でアニメるか)は、Timerをnewするとき、これまた単純に指定します。
    • good
    • 0

マルチスレッド、ダブルバッファ等の意味、記述が分からないのであれば、


ほとんどの基本には載っていると思います。
バネの単身動や、サインカーブについての、
物理的、数学的な基本知識があれば、そのまま記述するだけです。
バネの物理的な動きについては、別途で勉強するしかないと思います。
それでもダメなら、バネの物理演算に対する質問として具体例を書き、
物理のコーナーでお尋ねください。

このサイトのアニメーションまでを読むだけでも、
Javaサイドの基本は全て分かると思います。↓
http://homepage.mac.com/tuyano/JavaTutor/index.h …

理解できなかったら、アニメーションというのは、
ゲーム作りを目指すものであれば、さけて通れない技術ですので、
そういったタイトルの初心者用の参考書を探すのがいいと思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!