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变量变为真,并且它重新绘制得如此之快,矩形在屏幕上大约持续一帧。我对Java很新,所以我不完全确定我正在做的一切。
我在想也许我可以使用计时器进行重新绘制睡眠。但我不知道应该如何处理它。有什么想法吗?
答案 0 :(得分:0)
如果您想让线程进入休眠状态,只需在Thread.sleep(n)
调用之前添加n
,其中repaint()
是您想要睡眠的数量(以毫秒为单位)。但请注意,这具有重大意义。由于这(大概)是在你的主线程上完成的,它实际上会停止那些n
毫秒的applet。