Web applet游戏设计

时间:2011-03-12 00:04:15

标签: java web-applications applet

我在java中制作网页游戏,每次进入GUI设计时都遇到麻烦,通常我会查看其他代码并复制大部分设计,而我无法决定应该使用哪种设计。我使用了Applet,Canvas,JFrame。我需要的是在不同游戏之间切换的主循环和绘图功能。那么我应该使用哪个类和哪个设计,哪个更好,为什么,可能链接到有用的教程和示例...请解释你的建议。感谢。

5 个答案:

答案 0 :(得分:4)

如果您想要解析某些代码,请查看Killer Game Programming in Java

这本书很好,即使它现在使用的是旧图书馆。几年前我买了它。如果您不喜欢购买它,您仍然可以从网站下载所有源代码

您可以非常轻松地抽象出使用Applet或Java Web Start之间的选择。如果选择,我会选择JWS,纯粹是因为我发现设置开发环境更容易调试。

这两个链接演示了如何使用JFrame v Canvas:

  1. JFrame http://download.oracle.com/javase/tutorial/uiswing/components/frame.html

  2. 画布 http://en.wikibooks.org/wiki/Java_Programming/Canvas

答案 1 :(得分:2)

  • Applet(或JApplet)嵌入在网页中,因此只有浏览器给它的空间。只要页面显示,它就会一直存在。
  • 正确的(J)框架是它自己的窗口,因此可以与窗口系统(和屏幕尺寸)允许的一样大 - 并且可以在不关闭浏览器页面(以及其中的小程序)的情况下关闭它。

这是主要区别。您可以在自己的Canvas(用于AWT)或JPanel(用于Swing)中进行绘制,并将其放在(J)Applet或(J)Frame中,从而将两者之间的差异抽象出来,直到您准备好决定。 / p>

答案 2 :(得分:1)

我会使用包含JPanels的JFrame开发您的应用程序。

当您准备好上网时,您可以使用java web start来启动您的JFrame。

我使用了Sun的java教程,它们非常有效。

答案 3 :(得分:0)

您可以编写一个包装类,使您的游戏可以作为applet(JApplet)或基于JFrame的应用程序运行。

然后我会在JPanel上编写所有特定于游戏的代码,该JPanel是作为JApplet或JFrame的子代添加的。您可以使用与以前使用Canvas完全相同的方式使用JPanel。

以下示例代码:

import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class AppletApp extends JApplet {

    public void init() {
        // do any applet-specific initialisation here
        getContentPane().add(new AppPanel());
    }

    private static final class AppPanel extends JPanel {
        public AppPanel() {
            // do any common initialisation here
            add(new JButton("Hello World!"));
        }
    }

    public static void main(String[] args) {
        // do any frame-specific initialisation here
        JFrame f=new JFrame("Frame");
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        AppPanel appPanel=new AppPanel();

        f.getContentPane().add(appPanel);
        f.pack();
        f.setVisible(true);
    }
} 

显然这只是一个玩具示例 - 通常你想把你的AppPanel分成一个单独的类文件等......

答案 4 :(得分:0)

与PaŭloEbermann一样,开发自己的画布或任何其他显示器组件是最好的方法(根据我的观点)。

您选择的组件也取决于您选择的库。如果只使用Java2D标准开发Java组件就足够了。如果切换到LWJGL,JOGL或其他库,它们通常会提供自己的组件。

特别是JOGL还提供了一种实现游戏循环的特定方法,因为它是由名为Animator的Thread驱动的。如果你想让你的设计与JOGL兼容,你必须让你的游戏循环与这个线程兼容。