ページ 11

リセット時に呼ばれる処理はありますか

Posted: 2019年10月07日(月) 13:27
by ジャングル
F5キーを押したときに呼ばれる箇所はありますか?(コアスクリプト内で)

リセットで終了したときに一部データが保存されないことがあり、不具合が起きるようなのです

リセット時に呼ばれる処理があれば教えて欲しいです
(あるいは、ゲームのウィンドウが閉じられるときとか)

Re: リセット時に呼ばれる処理はありますか

Posted: 2019年10月12日(土) 14:42
by トリアコンタン
こんにちは!
rpg_manager.jsの「2018行目付近」に「location.reload();」という記述があり、これが再読込の処理です。
この処理はブラウザのリロードとほぼ同じでindex.htmlを読み込み直します。

参考
https://developer.mozilla.org/ja/docs/W ... ion/reload

Re: リセット時に呼ばれる処理はありますか

Posted: 2019年10月12日(土) 18:06
by ジャングル
ありがとうございます
一部の大きいデータをlocalStorageに保存しており、
リセット~ニューゲームを連続で行うと消えてしまうようです
(セーブデータのinfoやcontentsは読書きが遅くてゲームが数秒停止するのでそれは使えませんでした)
location.reload()を確認して、書き換えられるようならそこでデータを保存してみます

Re: リセット時に呼ばれる処理はありますか

Posted: 2019年10月12日(土) 20:20
by トリアコンタン
なるほど、かなり大きなデータを保存していますね。。
localStorageは5MB以下推奨なのであまりに大きすぎると動作に支障がでるかもしれません。

また「location.reload()」はブラウザが実装している処理なので、ここの書き換えは難しいです。

Re: リセット時に呼ばれる処理はありますか

Posted: 2019年10月12日(土) 20:44
by ジャングル
ありがとうございます
location.reload()が呼ばれる直前でセーブの記述をしました★

コード: 全て選択

SceneManager.onKeyDown = function(event) {
    if (!event.ctrlKey && !event.altKey) {
        switch (event.keyCode) {
        case 116:   // F5
            if (Utils.isNwjs()) {
            // ↓↓ここに追加しました★
		localStorage._data = JSON.stringify(data);
                location.reload();
            }
            break;
        case 119:   // F8
            if (Utils.isNwjs() && Utils.isOptionValid('test')) {
                require('nw.gui').Window.get().showDevTools();
            }
            break;

        }
    }
};
もし、これでも消えるようなら、
infoやcontentsに並列でセーブするようにしてみます
ありがとうございました

あとグレップか何かで出来るだけ検索するようにします
済みません