Хорошо, как я перехожу с клавиатуры на шар, используя апплет?Java Applet - Перемещение шара по экрану
У меня есть до сих пор этот код, который ничего не делает.
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class KeyboardGame extends Applet implements KeyListener
{
private static final long serialVersionUID = 1L;
private static boolean keyboadrRightPressed = false;
public void init()
{
addKeyListener(this);
}
public void keyPressed(KeyEvent e)
{
int keyCode = e.getKeyCode();
if(keyCode == KeyEvent.VK_RIGHT)
{
keyboadrRightPressed = true;
}
else
{
keyboadrRightPressed = false;
}
}
public void keyReleased(KeyEvent e) {
}
public void keyTyped(KeyEvent e) {
}
public void paint(Graphics g)
{
g.fillOval(20,20,20,20);
g.drawString("String :"+keyboadrRightPressed,20,30);
}
}
А также я должен понимать, как это работает. Я не понимаю, почему мой слушатель не работает, мне нужен
while(true)
или Thread?
Я сделал это, я действительно видел, что он немного держится в начале, шар перемещается на 1 пиксель и ждет 0,5 секунды до тех пор, пока он не будет двигаться непрерывно, должен ли я использовать Threads для решения моей проблемы? – Master345
Пауза внутри происходит из-за того, как работают события клавиатуры. Когда вы думаете о вводе текстового редактора, если вы нажмете и удерживаете клавишу «a», он наберет один a, приостановит на мгновение, а затем начнет добавлять кучу. Так что да, я бы использовал поток, который вы можете выполнить с постоянным интервалом, чтобы вы не получили это небольшое отставание. Вы также захотите переместить вызов функции repaint() в поток, который фактически перемещает мяч так, чтобы он перерисовывался при перемещении мяча, а не при обнаружении нажатия клавиши. – aoi222
ОК спасибо, если у меня есть еще вопросы, я спрошу вас – Master345