【发布时间】:2014-04-30 23:27:48
【问题描述】:
我对 java 很陌生。我需要在 Java 游戏上为两个图像设置动画。它是一款宇宙飞船游戏,允许两个用户使用键盘控制物体。我已经部分实现了这一点,但是我无法理解如何允许两个键盘控件,而且通过键盘输入移动的一个对象闪烁很多。
public class MainFrame extends JFrame implements KeyListener {
MainPanel mPanel;
MainPanel secondss;
MainPanel thirdss;
int speed = 5;
//ss facing north
int direction = 0;
MainFrame() {
setTitle("spaceship Game");
mPanel = new MainPanel("C:/img");
secondss = new MainPanel("C:/img");
setSize(1024, 768);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
add(mPanel); // add MainPanel JPanel to JFrame
setVisible(true); // show class
add(secondSs);
add(thirdSs);
seconds.currentSs.setX(400);
secondSS.currentSs.setY(100);
}
public void actionPerformed( ActionEvent e )
{
if( e.getSource() == mPanel)
{
}
}
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == e.VK_LEFT) {
int x = mPanel.currentSs.getX() - speed;
mPanel.currentSs.setX(x);
}
if (e.getKeyCode() == e.VK_RIGHT) {
int x = mPanel.currentSs.getX() + speed;
mPanel.currentSs.setX(x);
}
if (e.getKeyCode() == e.VK_DOWN) {
int y = mPanel.currentSs.getY() + speed;
mPanel.currentSs.setY(y);
}
if (e.getKeyCode() == e.VK_UP) {
int y = mPanel.currentSs.getY() - speed;
mPanel.currentSs.setY(y);
}
//change image direction
mPanel.frame = direction;
}
public static void main(String[] args) {
MainFrame mainFrame = new MainFrame();
mainFrame.addKeyListener(mainFrame);
}
如果有人可以提供帮助,或者如果没有为我指明正确的方向,我将不胜感激。
【问题讨论】:
-
使用
paint(Graphics g) -
为了尽快获得更好的帮助,请发布MCVE(最小完整且可验证的示例)。对代码块使用一致且合乎逻辑的缩进。代码的缩进是为了帮助人们理解程序流程。 @KlemensMorbe 至少出于两个原因,最好不直接在顶级容器上绘制,而是使用
JPanel进行绘制。
标签: java swing object animation keylistener