1

我正在开发一个 LibGDX 小程序游戏,我想访问由 JavaScript 设置的 cookie。我无法使用JSObject window = JSObject.getWindow(this);,因为我构建小程序的方式如下(您可能知道这一点)。

public class MainApplet extends LwjglApplet {
    private static final long serialVersionUID = 1L;
    public MainApplet() {
        super(new TitansArena(), false);
    }
}

如何访问 cookie?

编辑:

我想访问我TitansArena班级中的 javascript。为了做到这一点,我需要从中访问小程序,TitansArena但我无法获得对它的引用。我需要一些方法来访问里面的小程序,TitansArena这样我就可以创建对 html 文档的窗口对象的引用。

4

1 回答 1

1

我不确定JSObjectAPI 的细节,但总的来说,对于 Libgdx 应用程序,您从平台无关代码(TitansArena在这种情况下)访问平台相关代码(MainApplet在这种情况下)的方式是创建一个接口并传递一个实现该接口的实例。请参阅https://code.google.com/p/libgdx/wiki/ApplicationPlatformSpecific

具体来说,您可以执行以下操作:创建一个SaveState使用方法调用的新接口save(String)。添加一个新的静态内部类MainApplet(例如调用AppletSaveState)来实现这个接口,并将它的一个新实例传递给TitansArena构造函数(添加一个带有SaveState类型的构造函数参数)。现在,您的平台无关代码可以调用save传递给构造函数的对象,然后您将处于MainApplet可以使用JSObject其方法的上下文中。

Oi,由于super电话的原因,设置起来有点烦人。我认为懒惰地初始化从SaveState实例返回的指针MainApplet会做到这一点。就像是:

public class MainApplet extends LwjglApplet {
    public static final long serialVersionUID = 1L;

    public final SaveState saver = new AppletSaveState();

    public MainApplet() {
       super(new TitansArena(saver), false);
       saver.appletContext = this; // fixup saver instance to point necessary context
    }
}
于 2013-06-15T22:36:54.717 回答