.png文件的drawImage()在Java applet中不起作用?

时间:2009-03-09 12:29:27

标签: java image applet

我使用applet制作了这个pacman游戏。当applet完成加载时,它意味着显示一个“开始菜单”图形,其中显示“双击以启动游戏”等。图形将占用整个400x400小程序。这是代码:

public void paint(Graphics g)
{
    if (! isRunning)
    {
        switch (result)
        {
            case 0:
                showStartScreen(g);
            break;

            case 1:
                showWonScreen(g);
            break;

            case -1:
                showLostScreen(g);
            break;
        }
        return;
    }
      //Code for rendering other stuff if game is here
}

showStartScreen:

public void showStartScreen(Graphics g)
{
    Image intro=img.getImg("pacman-intro.png");
    g.drawImage(intro, 0, 0, this);

}

当我在Eclipse上本地运行时,这很好用,但是在Web浏览器中,当加载applet时,我只看到一个空白框,其中之前是java的加载动画。令人惊讶的是,如果我随机双击applet所在的位置,游戏就会正常启动并正常工作。所以这让我觉得问题只是使用drawImage绘制.png文件。

当你赢或输游戏时会发生同样的事情,只是挂起而不是画出所需的图形。

您可以看到此here(您可以使用箭头键控制)

P.S我在这里使用双缓冲。

有什么想法..?

编辑:ImgHelper类的代码,用于加载img:

import java.awt.Image;
import java.net.URL;

import javax.swing.ImageIcon;

public class ImgHelper
{
    public Image getImg(String file)
    {
            //Engine is the name of the base applet class
        URL url=Engine.class.getClassLoader().getResource("assets/" + file);
        return new ImageIcon(url).getImage();

    }


}

2 个答案:

答案 0 :(得分:4)

啊,我检查了你的jar文件的内容。

将“pacman-intro.png”替换为“pacman-intro.PNG”。这是区分大小写的。

答案 1 :(得分:1)

png是否在正确的目录中?是“。”在服务器上的路径env-variable中?

尝试“./pacman-intro.png”即