В свободное время я программировал прототип игры на Java. Эта игра была только для моих образовательных целей. У меня это работает нормально через файл запуска JNLP в Интернете, а также на моей основной машине, через JFrame.
Мое главное намерение - сделать этот прототип для воспроизведения в веб-браузерах с помощью JApplet. Я кодировал класс под названием AppletPlayer.java. Цель этого класса - по сути служить средством запуска для основного класса моей игры. Файл AppletPlayer.java выглядит примерно так:
public class AppletPlayer extends JApplet {
private Game myGame_; // This is my game's main class
private boolean started_ = false;
public void init() {}
public void start() {
if (!started_) {
started_ = true;
myGame_ = new Game();
this.setContentPane(myGame_);
myGame_.start() // I set focusable, and enabled to 'true' in the Game's start method
// My Game class has no init method. Just a start method that spawns a new thread, that the game runs in
}
}
Теперь класс Game сам расширяет JComponent и реализует Runnable, KeyListener и FocusListener. Если я запускаю AppletPlayer через Eclipse, он работает как чудо в своем Applet Viewer. Однако при развертывании в Интернете я вижу две вещи:
- На машине под управлением Windows XP Апплет загружается, застревает на главном титульном экране, никогда не получая фокуса, следовательно, никогда не регистрирует какой-либо пользовательский ввод.
- На машине с Windows 7 апплет загружается, я слышу музыку моей игры, но сам экран апплета отображает простой белый прямоугольник и больше ничего.
Эти проблемы возникают как в IE, так и в Firefox.
Я уже некоторое время просматривал Google и StackOverFlow, пытаясь найти решение, но мне не повезло. Я немного незнаком с Апплетами и надеялся на толчок в правильном направлении.