gpt4 book ai didi

java - png 图像上的动画问题

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

大家好,我的动画程序正在取得进展,但我遇到了一个问题,我的 Alien.png 没有显示在 jframe 中。我将alien.png 与此动画demo.java 放在同一文件夹中,所以我不确定为什么它找不到alien.png。任何帮助将不胜感激

package animationdemo;


import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.Timer;

public class AnimationDemo extends JFrame {
Image alien;
public AnimationDemo() {

alien = Toolkit.getDefaultToolkit().getImage("alien.png");
MovingMessagePanel messagePannel = new MovingMessagePanel();
messagePannel.alien = this.alien;
Timer timer = new Timer(50, messagePannel);
timer.start();
this.add(messagePannel);
}
public static void main(String[] args) {
AnimationDemo frame = new AnimationDemo();
frame.setTitle("Project 10");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(500, 500);
frame.setVisible(true);
}

}

class MovingMessagePanel extends JPanel implements ActionListener {
public int xCoordinate = 20;
public int yCoordinate = 20;
public int xDir=5;
public int yDir=5;
public Image alien;

public void actionPerformed(ActionEvent e) {
repaint();
}

@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
if (xCoordinate > getWidth()) xDir*=-1;
if (yCoordinate > getHeight()) yDir*=-1;
if (xCoordinate <0) xDir*=-1;
if (yCoordinate <0) yDir*=-1;
xCoordinate += xDir;
yCoordinate += yDir;
g.drawImage(alien,xCoordinate,yCoordinate,this);
}
}

最佳答案

让我们看一下代码行:

package animationdemo; // this one!

import java.awt.Graphics;
// ..

public class AnimationDemo extends JFrame {
Image alien;
public AnimationDemo() {

alien = Toolkit.getDefaultToolkit().getImage("alien.png"); // & this one!

最后一行实际上是尝试从“当前目录”加载文件

但是该图像可能无法再作为文件进行访问。应用程序资源在部署时将成为嵌入式资源,因此明智的做法是立即开始访问它们,就好像它们是嵌入式资源一样。安必须通过 URL 而不是文件访问。请参阅info. page for embedded resource了解如何构成 URL。

请注意,鉴于第一行突出显示,查找资源的最佳路径可能是:

..getResource("/animationdemo/alien.png")

另请注意,getResource 方法区分大小写,因此 ..

..getResource("/animationdemo/alien.PNG")

..不会找到小写版本,反之亦然。

<小时/>

顺便说一句,我通过对上面的源代码进行了这个小改动来检查了我的“缺失图像”理论:

    alien = new BufferedImage(40, 40, BufferedImage.TYPE_INT_RGB);
//Toolkit.getDefaultToolkit().getImage("alien.png");

鉴于我看到了一个动画黑色方 block ,它支持的主要问题是找不到图像。代码仍有一些其他方面需要调整,但基本上朝着正确的方向发展。

关于java - png 图像上的动画问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36842244/

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