111入力フォームMZ版

MVのフォームによる文字入力のプラグインをMZに移植しました。
主な変更点は、プラグインコマンドがMZの形式になり、指定しやすくなった点でしょう。
capture454.pngcapture455.png
先日、「これの後に選択肢を入れると挙動がおかしくなる」などの報告が来たので修正しました。

だけれども「既知のバグ」にある、「コマンドの後に文章表示を入れないとメッセージウィンドウが消えない」
というのは残っていますがご了承ください。

↑Ver1.1.0にて解決しました。うなぎおおとろ様に感謝。

ライセンス:
このプラグインはパブリックドメインです。利用にいかなる制限もありません。
  • 製作者:神無月サスケ
  • 非商用利用: 自由
  • 商用利用: 自由
  • 再配布: OK
  • 加工: OK
  • 加工後の再配布: OK
  • シリーズ: ツクールMZ
2021/01/23追記:
最新版(Ver1.1.0)が出ています。このスレッドの最新のレスからDLしてください。
ここに添付してあるものは旧バージョンですが、念のため残してあります。
 

Attachments

  • 111_InputFormMZ.zip
    10.1 KB · 閲覧: 41
最後に編集:
「コマンドの後に文章表示を入れないとメッセージウィンドウが消えない」件についてはおそらく次の対応で消せると思います。
コメントで追加って書いてある部分が対応のために追加したコードです。

やっている内容としては、入力フォームを終わらせるときにメッセージウィンドウのクローズ要求を$gameTempに保存し、
それをメッセージウィンドウで毎フレーム確認して、要求があればメッセージウィンドウをクローズするようにしています。

・イベントリスナーの登録に下記の内容を追加
コード:
    //
    // add event listeners
    //

    // accept when enter key(決定キーで送信)
    gui.input.addEventListener("keydown", function (e) {
      if (e.keyCode === 13) {
        $gameTemp.setMessageWindowCloseSignal(true); // 追加: メッセージウィンドウクローズシグナルをONにする
        Input.clear();
        gui.accept();
        // stop propagation not to fire keydown event in document.
        // (親へのイベント伝播を止める(documentのkeydownが反応しないように))
        e.stopPropagation();
      }
    });
    // Set event player click submit/cancel button.
    gui.submit.addEventListener("click", function () {
      $gameTemp.setMessageWindowCloseSignal(true); // 追加: メッセージウィンドウクローズシグナルをONにする
      gui.accept();
      return false;
    });
    if (gui.cancel) {
      gui.cancel.addEventListener("click", function () {
        $gameTemp.setMessageWindowCloseSignal(true); //追加: メッセージウィンドウクローズシグナルをONにする
        gui.reject();
        return false;
      });
    }

・コードの最後の部分に下記の内容を追加
コード:
    //
    // start
    //
    gui.start();
  };

  // 以下の内容を追加
  const _Game_Temp_initialize = Game_Temp.prototype.initialize;
  Game_Temp.prototype.initialize = function() {
    _Game_Temp_initialize.call(this);
    this._messageWindowCloseSignal = false;
  };

  // メッセージウィンドウクローズシグナルを取得する
  Game_Temp.prototype.messageWindowCloseSignal = function() {
    return this._messageWindowCloseSignal;
  };

  // メッセージウィンドウクローズシグナルを設定する
  Game_Temp.prototype.setMessageWindowCloseSignal = function(signal) {
    this._messageWindowCloseSignal = signal;
  };

  const _Window_Message_update = Window_Message.prototype.update;
  Window_Message.prototype.update = function() {
    // メッセージウィンドウクローズシグナルがONの場合、メッセージウィンドウを閉じる
    if ($gameTemp.messageWindowCloseSignal()) {
      $gameTemp.setMessageWindowCloseSignal(false);
      this.terminateMessage();
      return;
    }
    _Window_Message_update.call(this);
  };
})();
 
うなぎおおとろ様:
アドバイスありがとうございました!
懸案の問題が一発で解決してしまいました。
そうです、僕はツクールMVからJavaScriptを始めたので、
DOM関係に疎かったのです。
DOM関連の部分にメスを入れることで解決できたのですね。

本当にうなぎおおとろさんには感謝しても感謝しきれません。
ありがとうございました!
 

Attachments

  • 111_InputFormMZ.zip
    10.3 KB · 閲覧: 53
うなぎおおとろ様:
アドバイスありがとうございました!
懸案の問題が一発で解決してしまいました。
そうです、僕はツクールMVからJavaScriptを始めたので、
DOM関係に疎かったのです。
DOM関連の部分にメスを入れることで解決できたのですね。

本当にうなぎおおとろさんには感謝しても感謝しきれません。
ありがとうございました!
解決してよかったです!
 
トップ