0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【JavaScript】【RPGツクールMV】alert,confirmを使った利用規約

Last updated at Posted at 2020-05-06

alert,confirmの理解に加え、ゲームでの応用を考えてみました。

##alert
alert("文字列")でポップアップを表示

##confirm
confirm("文字列")でOK,キャンセルを問うポップアップを表示

OKを押下した際はtrueを返すので、if文と組み合わせることで設問に対する処理も行える

##応用例 RPGツクールMVでalert,confirmを使った利用規約確認

要件:
・confirmで設問
・キャンセル時にalertでメッセージを表示後、ウィンドウを終了
・テストプレイ時は実行しない


    //rpg_scenes.jsの391行目の処理。起動時に実行される。
    Scene_Boot.prototype.start = function() {
      Scene_Base.prototype.start.call(this);
      SoundManager.preloadImportantSounds();
      if (DataManager.isBattleTest()) {
          DataManager.setupBattleTest();
          SceneManager.goto(Scene_Battle);
      } else if (DataManager.isEventTest()) {
          DataManager.setupEventTest();
          SceneManager.goto(Scene_Map);
      } else {
          this.checkPlayerLocation();
          DataManager.setupNewGame();
          SceneManager.goto(Scene_Title);
          Window_TitleCommand.initCommandPosition();
      }
      this.updateDocumentTitle();
      //ここから追加処理。
      if(!$gameTemp.isPlaytest()){//テストプレイではないときに実行
        const answer = confirm("利用規約に同意しますか?");
        if (answer){
          //OK押下時の処理。同意したら二回目以降は問わないフラグを立て、if(!$gameTemp.isPlaytest()の実行条件にすれば便利になる
        } else {
          //キャンセル押下時の処理
          alert("終了します");
          window.close();
        }
      }
    };

結果、正しく動作することができました。

20200506_1.jpg

20200506_2.jpg

##課題
同意した際に変数を変化させ、2回目以降確認しない処理ができませんでした。

具体的にはScene_Boot.prototype.startの処理前に
let confirmAnswer = 0;
とし、


      if(confirmAnswer === 0){
        if(!$gameTemp.isPlaytest()){//テストプレイではないときに実行
          const answer = confirm("利用規約に同意しますか?");
          if (answer){
            confirmAnswer = 1;
          } else {
            alert("終了します");
            window.close();
          }
        }
      }

のとしても、起動都度、let confirmAnswer = 0;を読んでしまうためか、confirmAnswer = 1の値が保持されないのか、毎回確認が発生してしまいました。
勉強不足を痛感した次第です。
解決したら加筆します。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?