gpt4 book ai didi

java - 在java中对两个图像进行动画处理

转载 作者:行者123 更新时间:2023-12-01 07:27:12 24 4
gpt4 key购买 nike

我对java很陌生。我需要在 java 游戏上制作两个图像的动画。它是一款 spaceship 游戏,允许两个用户使用键盘控制物体。我已经部分实现了这一点,但是我无法理解如何允许两个键盘控件,而且通过键盘输入移动的一个对象闪烁很多。

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);
}

如果有人可以提供帮助,或者没有为我指明正确的方向,我将不胜感激。

最佳答案

  • JFrame 无法针对 KeyEvents 进行聚焦,因此默认情况下永远不会对 KeyEvents 使用react

  • setVisible(true);应该是最后一个代码行,在所有 JComponent 添加到 JFrame 之后,

  • 为什么有 public void actionPerformed( ActionEvent e ),必须生成表达式编译器

<小时/>
  • 创建 JFrame 作为局部变量

  • 将 JPanel 放入 JFrame

  • 覆盖 JPanel 的 getPreferredSize,而不是 JFrame 的 setSize

  • 然后调用 pack() 和 setVisble(true)

<小时/>
  • 将图像放入Java包

  • 将图像放入 JLabel

  • 将 NullLayout 设置为 JPanel(否则动画无法实现)

  • 将 KeyBindings 添加到 JPanel,覆盖所需/必需的 KeyEvents

<小时/>
  • 还有另一种方法,即使用自定义绘画,通过覆盖 JPanel 的paintComponent,因为 KeyEvents 保留在这里,与 KeyListener 相比,KeyBindings 作为更好的监听器

关于java - 在java中对两个图像进行动画处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22595306/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com