2016-05-10 8 views
0

私はキーストーンを使ってラケットを左右に動かすミニテニスゲームを作った。マウスイベントを使用してラケットを移動するにはどうすればよいですか?

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; 
} 
} 

マウスイベントを使用してラケットを移動する方法を知りたいと思います。たとえば、左ボタンを使用してラケットをクリックすると、ラケットを左右にドラッグします。また、ボタンを押さずにマウスを左右に動かしてラケットを動かす方法も含めることができますか?

+0

http://stackoverflow.com/a/874424/2958086を – Compass

+0

あなたが提供するリンクは、私のコードのようなものではありませんだから私はそれをどこで変更するのか知りません。しかし、ありがとう –

+0

あなたはキーイベントをしましたか?本当に??いいえキディン – gpasch

答えて

0

あなたはマウスリスナー

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) {} 
.... 

} 
+0

このコードはドラッグではありません。私はラケットを左右にドラッグしたい。場所をクリックせずに、その場所に移動します。しかしthx tho –

+0

を押したままにしておけば、ラケットをクリックしているかどうかを検出する 'if()'ステートメントを追加することができます。 – bakz

+0

私がラケットをクリックすると、ラケットの側面が私のポインタの位置にジャンプします。私はそれを保持し、それが移動しないドラッグ –

関連する問題