【发布时间】:2009-03-09 12:29:27
【问题描述】:
我使用小程序制作了这个吃豆人游戏。当小程序完成加载时,它会显示我制作的“开始菜单”图形,上面写着“双击开始游戏”等。该图形将占据整个 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 浏览器中,当加载小程序时,我只看到一个空白框,其中 java 的加载动画以前是。令人惊讶的是,如果我随机双击小程序所在的位置,游戏就会开始并正常运行。所以这让我觉得问题在于使用drawImage 绘制 .png 文件。
当你输赢比赛时也会发生同样的事情,它只是挂起而不是绘制它需要的图形。
可以看到这个here(可以用方向键控制)
P.S 我在这里使用双缓冲。
有什么想法吗?
编辑:用于加载 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();
}
}
【问题讨论】:
-
不可能说这有什么问题。例如,什么是“img”,它是如何加载图像的?