怎么样用鼠标移动小球,看清楚是移动,就像联盟的英雄一样,鼠标点一个地方英雄就会慢慢的走向那个地方!
我写的代码如下:求各位更正importjava.awt.*;importjava.awt.event.KeyEvent;importjava.awt.event.KeyL...
我写的代码如下:求各位更正
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import javax.swing.event.MouseInputListener;
public class MyBoll {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Frame f = new Frame();
f.setBackground(Color.black);
f.setSize(300,400);
f.setLocationRelativeTo(f);
MyPanel mp = new MyPanel();
f.add(mp);
f.addMouseListener(mp);
mp.addMouseListener(mp);
Thread t = new Thread ();
t.start();
f.show();
}
}
class MyPanel extends Panel implements MouseInputListener{
int x = 30;
int y = 30;
int f = 0;
int x1 = x+15 , y1 = y+15;
public void paint(Graphics g)
{
g.clearRect(0, 0, 400, 500);
g.setColor(Color.white);
g.drawLine(x+15, y+15, x1, y1);
g.fillOval(x, y, 30, 30);
}
public void mouseClicked(MouseEvent arg0) {
x1 = arg0.getX();
y1 = arg0.getY();
repaint();
}
public void mouseDragged(MouseEvent arg0) //鼠标拖动
{
// TODO Auto-generated method stub
x = arg0.getX();
y = arg0.getY();
repaint();
}
@Override
public void mouseMoved(MouseEvent arg0) //鼠标移动
{
// TODO Auto-generated method stub
}
public void 小球移动路线() throws Exception{
while(true)
{
if(x<x1)
{
x ++;
}
if(y<y1)
{
y ++;
}
Thread.sleep(1000/30);
repaint();
}
}
}
本人是java的新手,所以在跟正我的代码前加上注释和解释,方便我看懂 展开
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import javax.swing.event.MouseInputListener;
public class MyBoll {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Frame f = new Frame();
f.setBackground(Color.black);
f.setSize(300,400);
f.setLocationRelativeTo(f);
MyPanel mp = new MyPanel();
f.add(mp);
f.addMouseListener(mp);
mp.addMouseListener(mp);
Thread t = new Thread ();
t.start();
f.show();
}
}
class MyPanel extends Panel implements MouseInputListener{
int x = 30;
int y = 30;
int f = 0;
int x1 = x+15 , y1 = y+15;
public void paint(Graphics g)
{
g.clearRect(0, 0, 400, 500);
g.setColor(Color.white);
g.drawLine(x+15, y+15, x1, y1);
g.fillOval(x, y, 30, 30);
}
public void mouseClicked(MouseEvent arg0) {
x1 = arg0.getX();
y1 = arg0.getY();
repaint();
}
public void mouseDragged(MouseEvent arg0) //鼠标拖动
{
// TODO Auto-generated method stub
x = arg0.getX();
y = arg0.getY();
repaint();
}
@Override
public void mouseMoved(MouseEvent arg0) //鼠标移动
{
// TODO Auto-generated method stub
}
public void 小球移动路线() throws Exception{
while(true)
{
if(x<x1)
{
x ++;
}
if(y<y1)
{
y ++;
}
Thread.sleep(1000/30);
repaint();
}
}
}
本人是java的新手,所以在跟正我的代码前加上注释和解释,方便我看懂 展开
3个回答
展开全部
假设,moveX,moveY是小球的当前两个坐标的移动距离。
但小球不动的时候,他们等于0.
小球当前的坐标为x,y,速度为speed。
鼠标监听事件时,获取鼠标点击的位置mousX,mousY。
将moveX=(X-mousX)/speed,获取点击之后小球往目标点靠近时的X向移动距离。
将moveY=(Y-mousY)/speed。
但小球不动的时候,他们等于0.
小球当前的坐标为x,y,速度为speed。
鼠标监听事件时,获取鼠标点击的位置mousX,mousY。
将moveX=(X-mousX)/speed,获取点击之后小球往目标点靠近时的X向移动距离。
将moveY=(Y-mousY)/speed。
更多追问追答
追问
追答
filloval这个函数的第一个前面两个参数不应该是代表鼠标坐标的mousx,mousy.而是代表小球坐标的x.y.
线程里不应该是设置movex,movey.而是设置x=x+movex.y=y+movey。
最后,鼠标点击才是设置movex=x-mousx.
注意当小球移动到指定位置将movex归零
2014-02-23
展开全部
没看懂
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2014-02-23
展开全部
我不知道怎么样用鼠标移动小球
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询