java - 从 LibGDX Applet 访问 cookie

标签 java applet libgdx

我正在开发一个 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/

相关文章:

java - LibGDX ScrollPane 显示黑屏

java - 我正在尝试在我的方法中使用小程序

java - Applet + Http Get 向其他 URL 发出请求

java - 如何设置Actor子类的位置忽略draw方法中的位置

java - 标记方法并通过标记从客户端对象调用它们

JavaFX WebView 不在 Dialog<T> 上呈现可视内容

java - 我收到错误'编译 'com.android.support:design:23.0.1' 编译 'com.android.support:appcompat-v7:23.0.1'

java - 如何用html测试java小程序?

java - 使用 gdx-controllers 确定是否按下了 dpad 上的按钮

file - Libgdx 纹理图集与文件