【问题标题】:how do i move the racquet using mouse event?如何使用鼠标事件移动球拍?
【发布时间】:2016-09-05 20:57:18
【问题描述】:

我制作了一个迷你网球游戏,使用按键监听器左右移动球拍。

package mini_tennis;
import java.awt.Rectangle;
import java.awt.Graphics2D;
import java.awt.event.KeyEvent;

public class Racquet {
private static final int Y = 330;
private static final int WIDTH = 60;
private static final int HEIGHT = 10;
int x = 0;
int xa = 0;
private Game game;

public Racquet(Game game) {
    this.game= game;
}

public void move() {
    if (x + xa > 0 && x + xa < game.getWidth()-60)
        x = x + xa;
}

public void paint(Graphics2D g) {
    g.fillRect(x, 330, 60, 10);
}

public void keyReleased(KeyEvent e) {
    xa = 0;
}

public void keyPressed(KeyEvent e) {
    if (e.getKeyCode() == KeyEvent.VK_LEFT)
        xa = -game.speed;
    if (e.getKeyCode() == KeyEvent.VK_RIGHT)
        xa = game.speed;
}

public Rectangle getBounds() {
    return new Rectangle(x, Y, WIDTH, HEIGHT);
}

public int getTopY() {
    return Y;
 }
}

我想知道如何使用鼠标事件移动球拍。例如,当我使用左键单击球拍时,它将向左或向右拖动球拍。您能否还包括我如何通过左右移动鼠标而不按任何按钮来移动球拍。

【问题讨论】:

  • 您提供的链接与我的代码完全不同,所以我不知道在哪里更改它。不过谢谢
  • 你做了关键事件??真的??不开玩笑

标签: java


【解决方案1】:

你需要一个鼠标监听器

public class Racquet {
 ...

  public void moveM(int mx)
  {
    x = mx; //invoked from panel to move the racquet
  }

 ...
}

你的面板类:

class yourPanelClass implements MouseListener {
...
panel.addMouseListener(this); //add listener to the panel
Racquet raq = new Racquet(); //create the racquet
...
    @Override
    public void mouseClicked(MouseEvent e) {
       raq.moveM(e.getX()+((int)raq.getWidth()/2)); 
// get pointer position on mouse press and invoke method 
// in Racquet passing the current X location of the pointer
// subtracting half of the width of the racquet thus positioning it in
// the middle.
    }


    @Override
    public void mouseEntered(MouseEvent e) {}

    @Override
    public void mouseExited(MouseEvent  e) {}

    @Override
    public void mousePressed(MouseEvent e) {}
....

}

【讨论】:

  • 这段代码不拖。我想左右拖动球拍。不单击该位置,然后可能会移动到该位置。但是谢谢
  • 如果你按住它会移动,你可以添加一个if()语句来检测他是否点击球拍,因此点击任何地方都不会让它跳到那里。跨度>
  • 当我点击球拍时,球拍的一侧会跳到我的指针位置。当我握住它并拖动它时它不会移动
  • 我做了一些小改动,现在检查一下,改成 mouseClicked 事件
猜你喜欢
  • 1970-01-01
  • 2013-04-22
  • 1970-01-01
  • 1970-01-01
  • 2020-06-13
  • 2023-03-19
  • 1970-01-01
  • 2021-01-30
  • 1970-01-01
相关资源
最近更新 更多