
【javaアプレット】マウスにリンクした雪だるまを回転させたい
【javaアプレット】マウスにリンクした雪だるまを回転させたい
現在、大小の丸2つで簡単に作った雪だるまをマウスにリンクすることができました。
マウスを右に動かせばそのまま雪だるまも右に動きます。
ここからがわかりません。
理想的には雪だるまは大きい丸を中心に回転させながらマウスの動かす方向に動く感じにしたいのです。
なにかアドバイスをください。
作ってるのに近いプログラム
↓
import java.applet.* ;
import java.awt.*;
import java.awt.event.*;
public class test extends Applet {
int posX = 50;
int posY = 50;
public void paint(Graphics g) {
g.setColor(Color.red);
g.fillOval(posX, posY, 50, 50);
}
public void init () {
this.setSize(200, 200);
this.setVisible(true);
addMouseMotionListener(new MouseMotionAdapter() {
public void mouseMoved(MouseEvent e) {
posX = e.getX();
posY = e.getY();
repaint();
}
});
}
}
投稿日時 - 2010-09-08 12:15:50
このQ&Aは役に立ちましたか?
3人が「このQ&Aが役に立った」と投票しています
回答(4)
public class test extends Applet {
final double PI = 3.14;
int posX = 50;
int posY = 50;
double yukiX = posX + 50;
double yukiY = posY + 10;
double radian = 0;
Timer t = new Timer();
public void paint(Graphics g){
g.setColor(Color.black);
g.drawOval(posX, posY, 50, 50);
g.drawOval((int)yukiX, (int)yukiY, 30, 30);
}
public void init(){
this.setSize(200, 200);
addMouseMotionListener(new MouseMotionAdapter(){
public void mouseMoved(MouseEvent e) {
posX = e.getX();
posY = e.getY();
yukiX = changeYukiX();
yukiY = changeYukiY();
repaint();
}
});
t.schedule(new MyTimer(), 0, 30);
}
public class MyTimer extends TimerTask{
public void run(){
radian +=3;
yukiX = changeYukiX();
yukiY = changeYukiY();
repaint();
}
}
public double changeYukiX(){
return posX + 25 - 15 + 40 * Math.cos(radian * PI / 180);
}
public double changeYukiY(){
return posY + 25 - 15 + 40 * Math.sin(radian * PI / 180);
}
}
三角比については前者さんの回答や学校の教科書などを読んでください。
投稿日時 - 2010-10-24 03:55:21
理解できませんと書かれてしまったので、絵を描いてみました。
大きな円Aはマウスカーソルを追いかけて動く、小さな円Bは円Aの周りをぐるぐる回る (図中の角度θが変わる) というイメージで合っていますか?
ANo.1に書いたのは、円Bの中心座標は
xb = xa + (ra+rb)cosθ
yb = ya - (ra+rb)sinθ
で求められるということです。
xaとyaはマウスカーソルの動きから決まり、raとrbの値は一定。θがどのように変化するかは質問文中にないので、質問者さんが好きに決めてください。
質問者さんがもしまだ三角関数を習っていない学年だったらごめんなさい。
投稿日時 - 2010-09-17 21:19:00
こうゆうこと??
import java.applet.* ;
import java.awt.*;
import java.awt.event.*;
public class test extends Applet {
int posX = 50;
int posY = 50;
int h=10;
public void paint(Graphics g) {
g.setColor(Color.red);
g.fillOval(posX-(h/20)-5, posY-(h/20)-5, 10+(h/10), 10+(h/10));
}
public void init () {
this.setSize(200, 200);
this.setVisible(true);
addMouseMotionListener(new MouseMotionAdapter() {
public void mouseMoved(MouseEvent e) {
posX = e.getX();
posY = e.getY();
h++;
repaint();
}
});
}
}
投稿日時 - 2010-09-15 17:40:58
回答ありがとうございます。
しかし、私のイメージとだいぶ違います。
日本語下手でごめんなさい。
わかりやすく言うと・・・
回転している雪だるまが画面上を動き回る感じ?
伝わりますかね?
投稿日時 - 2010-09-17 03:16:44