Я обнаружил, что если вы измените метод drawPlayer
на этот:
public void drawPlayer(Graphics g)
{
g.setColor(new Color(0,0,0));
g.fillRect(40*x, 40*y, 40, 40);
}
, а затем просто передадите объект Graphics
из класса Game
следующим образом:
public void update(Graphics g)
{
System.out.println("repaint");
if(left)
{
p.goL();
p.drawPlayer(g);
left = false;
}
else if(right)
{
p.goR();
p.drawPlayer(g);
right = false;
}
else if(up)
{
p.goU();
p.drawPlayer(g);
up = false;
}
else if(down)
{
p.goD();
p.drawPlayer(g);
down = false;
}
else
{
p.drawPlayer(g);
}
}
Ящик должен нарисовать.Хотя по какой-то причине мне пришлось сначала нажать Applet
, чтобы начать рисовать, а затем, если вы измените размер Applet
, рисунок исчезнет.
Кроме того, в качестве простого исправления, если выне хотите отслеживать предыдущие позиции блока, просто создайте две переменные, чтобы отслеживать предыдущую позицию блока, а затем очистите ее.Например:
private int lastX;
private int lastY;
public void drawPlayer(Graphics g)
{
g.clearRect(40*lastX, 40*lastY, 40, 40);
g.setColor(new Color(0,0,0));
g.fillRect(40*x, 40*y, 40, 40);
lastX = x;
lastY = y;
}