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

ジャングル
記事: 108
登録日時: 2018年12月30日(日) 14:51
お住まい: 自動販売機

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

投稿記事by ジャングル » 2019年10月07日(月) 13:27

F5キーを押したときに呼ばれる箇所はありますか?(コアスクリプト内で)

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

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

アバター
トリアコンタン
記事: 2311
登録日時: 2015年11月10日(火) 21:13
お住まい: きのこ王国
連絡を取る:

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

投稿記事by トリアコンタン » 2019年10月12日(土) 14:42

こんにちは!
rpg_manager.jsの「2018行目付近」に「location.reload();」という記述があり、これが再読込の処理です。
この処理はブラウザのリロードとほぼ同じでindex.htmlを読み込み直します。

参考
https://developer.mozilla.org/ja/docs/Web/API/Location/reload
プラグイン関連のトラブルが発生した際の切り分けと報告の方法です。
http://qiita.com/triacontane/items/2e227e5b5ce9503a2c30

[Blog] : http://triacontane.blogspot.jp/
[Twitter]: https://twitter.com/triacontane/
[GitHub] : https://github.com/triacontane/
ジャングル
記事: 108
登録日時: 2018年12月30日(日) 14:51
お住まい: 自動販売機

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

投稿記事by ジャングル » 2019年10月12日(土) 18:06

ありがとうございます
一部の大きいデータをlocalStorageに保存しており、
リセット~ニューゲームを連続で行うと消えてしまうようです
(セーブデータのinfoやcontentsは読書きが遅くてゲームが数秒停止するのでそれは使えませんでした)
location.reload()を確認して、書き換えられるようならそこでデータを保存してみます
アバター
トリアコンタン
記事: 2311
登録日時: 2015年11月10日(火) 21:13
お住まい: きのこ王国
連絡を取る:

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

投稿記事by トリアコンタン » 2019年10月12日(土) 20:20

なるほど、かなり大きなデータを保存していますね。。
localStorageは5MB以下推奨なのであまりに大きすぎると動作に支障がでるかもしれません。

また「location.reload()」はブラウザが実装している処理なので、ここの書き換えは難しいです。
プラグイン関連のトラブルが発生した際の切り分けと報告の方法です。
http://qiita.com/triacontane/items/2e227e5b5ce9503a2c30

[Blog] : http://triacontane.blogspot.jp/
[Twitter]: https://twitter.com/triacontane/
[GitHub] : https://github.com/triacontane/
ジャングル
記事: 108
登録日時: 2018年12月30日(日) 14:51
お住まい: 自動販売機

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

投稿記事by ジャングル » 2019年10月12日(土) 20:44

ありがとうございます
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に並列でセーブするようにしてみます
ありがとうございました

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

“MV:質問” へ戻る