A 回答 (3件)
- 最新から表示
- 回答順に表示
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();
};
}
No.2
- 回答日時:
javax.swing.Timerクラスを使うと簡単です。
仮に描画パラメータがたった一つだとすると、
x = ......; //パラメータを更新
repaint(); //このアニメパネルをrepaint
これだけです。フレームレート(何ミリ秒間隔でアニメるか)は、Timerをnewするとき、これまた単純に指定します。
No.1
- 回答日時:
マルチスレッド、ダブルバッファ等の意味、記述が分からないのであれば、
ほとんどの基本には載っていると思います。
バネの単身動や、サインカーブについての、
物理的、数学的な基本知識があれば、そのまま記述するだけです。
バネの物理的な動きについては、別途で勉強するしかないと思います。
それでもダメなら、バネの物理演算に対する質問として具体例を書き、
物理のコーナーでお尋ねください。
このサイトのアニメーションまでを読むだけでも、
Javaサイドの基本は全て分かると思います。↓
http://homepage.mac.com/tuyano/JavaTutor/index.h …
理解できなかったら、アニメーションというのは、
ゲーム作りを目指すものであれば、さけて通れない技術ですので、
そういったタイトルの初心者用の参考書を探すのがいいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C#の基本文法が詳しく書かれている教科書的な本ありますか 2 2023/02/11 03:48
- Java JavaでWebページ作成 7 2023/07/21 21:09
- Java 質問です。 Java言語を勉強出来る機会がありますが、プログラマーに将来性はあるのでしょうか? AI 3 2023/05/25 16:54
- CGI サイト訪問者の情報を取得したい 1 2023/02/21 11:03
- IT・エンジニアリング プログラマの仕事内容 4 2022/08/13 00:34
- C言語・C++・C# [至急] Project Euler:#16 Power digit sumコード、入力、出力、解説 3 2022/09/24 02:35
- C言語・C++・C# [至急]Project Euler:#13Large sum コード、入力、出力、解説 1 2022/09/24 02:30
- Java プログラミングのプの字も知りませんが、プログラミングを勉強したいです。とりあえず、学ぶものを決めない 3 2022/11/04 13:10
- Java javaでパソコンの内臓カメラや内臓マイクの映像や音をリアルタイムで映し出した 1 2022/07/09 14:02
- UNIX・Linux ubuntuのサーバー(virtual box)が、再起動するとデータが消えてしまいます。 4 2022/04/27 21:29
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「配列定数は、イニシャライザ...
-
intが負の時に投げる例外はあり...
-
Javaで電卓を作りたい
-
JUnit4のアノテーションについて
-
初心者ですが、今javaで簡単な...
-
javaで電卓を作りたいのですが...
-
JAVA エラー 式の開始が不正で...
-
DataSet(DataTable)の使い方
-
C++からC#のdllを参照する際、...
-
javaのエラーの意味がわかりま...
-
前日日付の取得
-
(Swing)JTextFieldを半角のみ入...
-
消費税を計算
-
各店舗全て、リンゴは1個150円...
-
すいません、質問というか困っ...
-
java spring でエラーが出て困...
-
java 格納した乱数それぞれにボ...
-
Java 初心者 int型の取り扱い方
-
C#で実行時にメソッドの返り値...
-
java 長さの異なる配列の代入
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
式の型は配列型で int に解決済...
-
「配列定数は、イニシャライザ...
-
javaでcsvファイル読込時の改行...
-
java spring でエラーが出て困...
-
javaでカレンダー作成
-
Javaで電卓を作りたい
-
SwingでJtableのヘッダ行が表示...
-
JAVA エラー 式の開始が不正で...
-
JAVAでCの関数ポインタのような...
-
C#で実行時にメソッドの返り値...
-
(Swing)JTextFieldを半角のみ入...
-
c# デリゲート関連の命名について
-
Javaでポインタ的なことはでき...
-
複数のボタンを配置し、それぞ...
-
JUnit4のアノテーションについて
-
javaのエラーの意味がわかりま...
-
intが負の時に投げる例外はあり...
-
sin曲線とcos曲線を描くプログ...
-
C++からC#のdllを参照する際、...
-
Java 初心者 int型の取り扱い方
おすすめ情報