Я сделал эту игру 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
}
showStartScreen:
public void showStartScreen(Graphics g)
{
Image intro=img.getImg("pacman-intro.png");
g.drawImage(intro, 0, 0, this);
}
Это прекрасно работает, когда я запускаю это локально на Eclipse, но в веб-браузере, когда апплет загружен, я просто вижу пустое поле, где ранее была анимация загрузки java. Удивительно, но если я дважды щелкну случайно, где должен быть апплет, игра запускается и работает как обычно. Так что это заставляет меня думать, что проблема заключается только в рисовании файлов .png с использованием drawImage
.
То же самое происходит, когда вы выигрываете или проигрываете игру, она просто зависает, а не рисует нужную графику.
Вы можете увидеть это здесь (вы можете использовать клавиши со стрелками для управления)
P.S Я здесь использую двойную буферизацию.
Есть мысли ..?
EDIT: код для класса 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();
}
}