代码之家  ›  专栏  ›  技术社区  ›  Ali

PNG文件在Java Applet中不起作用?

  •  0
  • Ali  · 技术社区  · 16 年前

    我用一个小程序制作了这个Pacman游戏。当小程序完成加载后,它将显示我制作的“开始菜单”图形,其中显示“双击开始游戏”等。该图形将占用整个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
    }
    

    显示开始屏幕:

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

    当我在Eclipse上本地运行时,这很好,但是在Web浏览器中,当加载小程序时,我只看到一个空白框,Java加载动画以前是这样的。令人惊讶的是,如果我随机双击小程序的位置,游戏就会正常启动和运行。所以这让我觉得问题就在于使用 drawImage .

    同样的事情也会发生在你输赢游戏的时候,它只是挂起而不是画出它需要的图形。

    你可以看到这个 here (可以使用箭头键控制)

    另外,我在这里使用双缓冲。

    有什么想法吗?

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

    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 回复  |  直到 16 年前
        1
  •  3
  •   amarillion    16 年前

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

    将“pacman intro.png”替换为“pacman intro.png”。它区分大小写。

        2
  •  1
  •   Xn0vv3r    16 年前

    PNG在正确的目录中吗?服务器上的路径env变量中是否有“.”?

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