我正在开发一个java游戏,游戏在eclipse中完美运行,但是当我导出的是一个可运行的jar文件时,它无效。只出现了一个黑色的窗户。
我的游戏有一个闪屏,几秒钟后会切换到菜单屏幕。启动画面由BufferedImage(jpg)组成,但菜单屏幕也包含Graphics2D书写。在运行jar文件后几秒钟,写入没有显示,所以我认为图像格式等可能不是问题。
我非常困惑和沮丧,所以任何帮助都会得到满足。
原来问题在于我使用的是Timer,这是我的flashscreen源码
package GameState;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.Timer;
import Main.GamePanel;
public class SplashState extends GameState implements ActionListener{
private BufferedImage image;
private Timer timer;
public SplashState(GameStateManager gsm) {
this.gsm = gsm;
try {
image = ImageIO.read(new File("Resources/Backgrounds/block.jpg"));
timer = new Timer(2000, this);
timer.setRepeats(false);
timer.start();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void init() {
}
public void update() {
}
public void draw(Graphics2D g) {
g.drawImage(image, (GamePanel.WIDTH-image.getWidth())/2, (GamePanel.HEIGHT-image.getHeight())/2, null);
}
public void keyPressed(int k) {
}
public void keyReleased(int k) {}
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
gsm.setState(GameStateManager.MENUSTATE);
timer.stop();
}
}
我仍然不知道什么是错的,所以任何帮助都会受到影响
答案 0 :(得分:0)
我过去遇到过类似的问题,这是由于Eclipse将所需的库打包到jar中的方式。我敢打赌你把它设置为“将所需的库提取到生成的jar中”,你应该将它设置为“将所需的库打包到生成的jar中”。为此,右键单击项目 - >出口 - > Java - > Runnable Jar文件。然后单击“下一步”,并选择“将所需库打包到生成的jar中”单选按钮。这应该可以解决你的问题。
如果要写入图像,则图像必须位于jar文件之外,因为在运行时无法编辑jar文件。如果是这种情况,您可能需要创建一个包含jar的文件夹以及它将写入的图像。