0
import java.applet.Applet;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.Timer;

public class Spelare extends Applet implements KeyListener{

public int x = 240; 
public int y = 450;
public boolean skott = false; 

}

public void init() {
    setBackground(Color.BLACK);
    setSize(500, 500);
    addKeyListener(this);
}

public void paint(Graphics g)  {

    g.setColor(Color.WHITE);
    g.fillRect(x, 450, 20, 15);

    if (skott == true) {
    g.setColor(Color.WHITE);
    g.fillRect (x, y, 3, 6);
    y-=1; 
    repaint();
    }
}


public void keyPressed(KeyEvent e) {
     if (e.getKeyCode() == KeyEvent.VK_RIGHT ) {
         if(x<470){
             x+=4;
             repaint();
         }
     }

     else if (e.getKeyCode() == KeyEvent.VK_LEFT ) {
    if (x>10) {
         x-=4;
         repaint();
     }
     }
     if (e.getKeyCode() == KeyEvent.VK_SPACE ) {
         skott = true; 

     }
     }

这是我第一次使用 Stack Overflow。

我想知道如何才能延迟 y 变量的重绘。因为当我按空格键时,skott-variable 变为 true,并且它重新绘制的速度非常快,矩形在屏幕上大约持续一帧。我对 Java 很陌生,所以我不能完全确定我做的一切都是正确的。

我在想也许我可以使用计时器让重绘进入睡眠状态。但我不知道我应该如何处理它。有什么想法吗?

4

1 回答 1

0

如果您想让线程进入睡眠状态,只需在调用之前将要睡眠的毫秒数添加Thread.sleep(n)n您的代码中repaint()。但是请注意,这具有重大影响。由于这(可能)是在您的主线程上完成的,因此它实际上会在这些n毫秒内停止小程序。

于 2013-10-08T05:27:17.120 回答