的W,A,S每個按鍵後或D的用戶x和y應該改變和廣場上吸引到x和y的含義圖形不更新。我的問題是你如何更新它?我曾嘗試在任何地方以各種可能的方式使用重繪,並開始認爲這不是問題。有人能告訴我我做錯了什麼或者如何解決問題。我對Java很新,所以如果我做了一個非常簡單的錯誤,請原諒我。
代碼:
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class KeyPressDrawing extends JFrame implements KeyListener{
// define variables
public static int user_x = 50;
public static int user_y = 50;
// init
public KeyPressDrawing(String s){
super(s);
JPanel area = new JPanel();
add(area);
setSize(800, 800);
setVisible(true);
addKeyListener(this);
setResizable(false);
}
// draw
public void paint(Graphics g) {
g.setColor (Color.black);
// x position, y position, width length, height length
g.fillRect(KeyPressDrawing.user_x, KeyPressDrawing.user_y, 50, 50);
repaint();
}
// check and change
public void keyTyped(KeyEvent e) {}
public void keyPressed(KeyEvent e) {}
public void keyReleased(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_W) {
System.out.println("Up");
KeyPress.user_y -= 20;
}
if (e.getKeyCode() == KeyEvent.VK_A) {
System.out.println("Left");
KeyPress.user_x -= 20;
}
if (e.getKeyCode() == KeyEvent.VK_S) {
System.out.println("Down");
KeyPress.user_y += 20;
}
if (e.getKeyCode() == KeyEvent.VK_D) {
System.out.println("Right");
KeyPress.user_x += 20;
}
}
public static void main(String[] args){
new KeyPressDrawing("Control Panel");
}
}
您提供給我們的代碼在任何時候都不會調用paint方法,這是需要的。 – ItzBenteThePig
我可能會在谷歌上查找遊戲循環 – ItzBenteThePig
@ItzBenteThePig,這是怎麼回事? – Taka