我正在开发一个 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类(class)。为了做到这一点,我需要从 TitansArena
访问小程序。但我无法得到它的引用。我需要一些方法来访问 TitansArena
里面的小程序这样我就可以创建对 html 文档的 window 对象的引用。
最佳答案
我不确定 JSObject
API 的具体情况,但一般来说,对于 Libgdx 应用程序,从平台独立代码(本例中为 TitansArena
)访问平台相关代码(本例中为 MainApplet
)的方式是创建一个接口(interface)并传递一个实现该接口(interface)的实例。请参阅https://code.google.com/p/libgdx/wiki/ApplicationPlatformSpecific
具体来说,您可以执行以下操作:使用方法 save(String)
创建一个名为 SaveState
的新接口(interface)。向 MainApplet
添加一个新的静态内部类(例如,称为 AppletSaveState
)来实现此接口(interface),并将其新实例传递给 TitansArena
构造函数(添加一个具有 SaveState
类型的构造函数参数)。现在,您的平台独立代码可以对传递到构造函数的对象调用 save
,然后您将进入 MainApplet
上下文,在其中可以使用 JSObject
及其方法。
哎呀,由于 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
}
}
关于java - 从 LibGDX Applet 访问 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17127811/