【解決済み】ループしたアイテム選択の処理のときマウスキャンセルできない

アバター
にゃたま
記事: 837
登録日時: 2016年1月13日(水) 23:53
お住まい: 床下の猫王国-すみませんが体調悪いのでサポートはお休みさせていただきます
連絡を取る:

【解決済み】ループしたアイテム選択の処理のときマウスキャンセルできない

投稿記事by にゃたま » 2019年3月12日(火) 15:03

こんにちは。またお世話になります。
以下のコードのようにループしたアイテム選択の処理でマウス右クリックをしたとき、
スクリプト:TouchInput.isCancelled()が反応してループの中断がされるハズですが、
ボタンキャンセルは問題ないのにマウスキャンセルのスクリプトだとうまくいかないようです。
viewtopic.php?t=1094
こちらのトピックで公開されているスクリプトを参照しました。
スクリプトが間違っているのでしょうか?

コード: 全て選択

◆ループ
  ◆文章:なし, ウィンドウ, 上
  :  :選択してください
  ◆アイテム選択の処理:選択したアイテムID, 隠しアイテムA
  ◆条件分岐:ボタン[キャンセル]が押されている
    ◆文章:なし, ウィンドウ, 下
    :  :ボタンキャンセル
    ◆ループの中断
    ◆
  :分岐終了
  ◆条件分岐:スクリプト:TouchInput.isCancelled()
    ◆文章:なし, ウィンドウ, 下
    :  :マウスキャンセル
    ◆ループの中断
    ◆
  :分岐終了
  ◆
:以上繰り返し
最後に編集したユーザー にゃたま on 2019年3月13日(水) 22:34 [ 編集 1 回目 ]

astral
記事: 106
登録日時: 2018年11月14日(水) 00:21
連絡を取る:

Re: ループしたアイテム選択の処理のときマウスキャンセルできない

投稿記事by astral » 2019年3月13日(水) 21:25

こんばんは。

リンク先のトピックに記載があるように、押しっぱなしでは反応しません。
>ただし、上記のコードは「押しっぱなし」にしている状態ではダメで、押した最初の瞬間のみ条件を満たします。

アイテム選択の処理で表示されているウィンドウのキャンセルが、【押した最初の瞬間】となるので、
そのまま押しっぱなしにしていても、TouchInput.isCancelled()はfalseです。

詳しくはrpg_windows.jsのWindow_Selectable.prototype.processTouch内に、
TouchInput.isCancelled()が記述されていて、ウィンドウのキャンセル判定をしています。
その後、Window_Selectable.prototype.updateInputDataで、キー・タッチを更新して、
TouchInput.isCancelled()はfalseになります。

どうしてもアイテム選択の処理がTouchInput.isCancelled()でキャンセルされたかどうかだけを判定したい場合は、
下記をプラグインとすることで、後からスイッチなどで判定することが出来ます。

コード: 全て選択

(function () {
    //アイテム選択の処理キャンセル時
    Window_EventItem.prototype.processCancel = function() {
        if (TouchInput.isCancelled()) {
            //マウス右クリック・タッチキャンセル時の処理
           
        }
        Window_Selectable.prototype.processCancel.call(this);
    };
})();


条件分岐のボタンが押されているかどうかは下記スクリプトです。

コード: 全て選択

Input.isPressed('cancel');


あとは単純に、キー入力関係なく指定した変数が0の時に中断する条件分岐かです。
アバター
にゃたま
記事: 837
登録日時: 2016年1月13日(水) 23:53
お住まい: 床下の猫王国-すみませんが体調悪いのでサポートはお休みさせていただきます
連絡を取る:

Re: ループしたアイテム選択の処理のときマウスキャンセルできない

投稿記事by にゃたま » 2019年3月13日(水) 22:29

astral様

お世話になっております。
提示されたスクリプトで特定のスイッチをONにして
そのスイッチで判定させたらうまくいきました!
スイッチは判定した条件分岐内でOFFにしたので
再度実行しても大丈夫なハズ…

ありがとうございました。ホント助かりました。
やっぱりマウスが使えないのはツライので…
別のスクリプトでスイッチを切り替える方法が思い浮かびませんでしたorz
自分頭硬いです…

“MV:質問” へ戻る