java在mac下和windows_Java – 游戏代码在Mac和Windows之间的行为不同

白阳煦
2023-12-01

import java.awt.*;

import java.awt.event.*;

import javax.swing.JFrame;

public class Game extends JFrame implements KeyListener

{

private int charX;

private int charY;

public Game()

{

charX = 250;

charY = 450;

this.setSize(500,500);

addKeyListener(this);

this.setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE);

}

public void keyTyped(KeyEvent event)

{

if(event.getKeyChar() == 'a')

charX-=5;

else if(event.getKeyChar() == 'd')

charX+=5;

else if(event.getKeyChar() == 'w')

charY-=5;

else if(event.getKeyChar() == 's')

charY+=5;

if(charX > 485)

charX-=6;

else if(charX < 10)

charX+=6;

if(charY > 485)

charY-=6;

else if(charY < 30)

charY+=6;

repaint();

}

public void keyPressed(KeyEvent event)

{

}

public void keyReleased(KeyEvent event)

{

}

public void paint(Graphics g)

{

super.paint(g);

g.setColor(Color.BLACK);

g.fillRect(charX,charY,10,10);

}

public static void main(String args[])

{

Frame frm = new Game();

frm.setVisible(true);

frm.repaint();

}

}

在学校我使用Mac,在家里我使用带有Windows 10的PC.在Mac上,此代码的行为与Windows版本不同.在Mac版本中,事情按预期进行,字符(方形)仅在每次按键时移动一点.但是在Windows上,如果按任意方向(如d),角色将继续向右移动,即使它只应该被调用一次.不仅如此,绘画时框架也不断闪烁.所以我想知道为什么Mac和Windows之间的版本之间存在差异,以及我如何解决Windows上的闪烁问题.我打算稍后添加keyPressed和keyReleased方法,所以我不认为我会有这么糟糕的时间.

 类似资料: