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);
    }
}

どうすればクッキーにアクセスできますか?

編集:

TitansArenaクラス内の JavaScript にアクセスしたい。これを行うには、からアプレットにアクセスする必要がありますが、TitansArenaそれへの参照を取得できません。TitansArenaHTML ドキュメントのウィンドウ オブジェクトへの参照を作成できるように、内部のアプレットにアクセスする方法が必要です。

4

1 に答える 1

1

APIの詳細についてはよくJSObjectわかりませんが、一般的に Libgdx アプリケーションでは、プラットフォームに依存しないコード (TitansArenaこの場合) からプラットフォームに依存するコード (MainAppletこの場合) にアクセスする方法は、インターフェイスを作成して渡すことです。そのインターフェースを実装するインスタンス。https://code.google.com/p/libgdx/wiki/ApplicationPlatformSpecificを参照してください

具体的には、次のようなことができます: SaveStatemethod で呼び出される新しいインターフェイスを作成しますsave(String)。このインターフェイスを実装する新しい静的内部クラスを(たとえばMainApplet呼び出される) に追加し、その新しいインスタンスをコンストラクターに渡します (コンストラクター パラメーターに型を追加します)。これで、プラットフォームに依存しないコードを、コンストラクターに渡されたオブジェクトで呼び出すことができるようになり、使用できるコンテキストとそのメソッドになります。AppletSaveStateTitansArenaSaveStatesaveMainAppletJSObject

おい、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 に答える