我使用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();
}
}
答案 0 :(得分:4)
啊,我检查了你的jar文件的内容。
将“pacman-intro.png”替换为“pacman-intro.PNG”。这是区分大小写的。
答案 1 :(得分:1)
png是否在正确的目录中?是“。”在服务器上的路径env-variable中?
尝试“./pacman-intro.png”即