1. このサイトではcookie (クッキー) を使用しています。サイトの利用を継続した場合、cookieの使用に同意したものとみなさせていただきます。 詳しくはこちらをご覧ください。

Window_Selectableのスクロール処理について

しぐれん2017-06-18に開始した「プラグイン制作・技術」の中の討論

  1. しぐれん

    しぐれん ユーザー

    プラグイン作成中にわからないことがあったので質問です。
    下記URLにあるプラグインを作成中なのですが、Window内に大量のアイテムを入れて動かすテストをしました。
    しかし、スクロールの▽が出ている時に下を押すと、表示が空っぽになり、操作ができなくなってしまいました。
    この場合、どういった処理を実装すればよいのでしょうか?

    https://github.com/Sigureya/RPGmakerMV/blob/master/Mano_ActorEquipItem.js
     
    #1
    神無月サスケフトコロ がいいね!しています
  2. フトコロ

    フトコロ ユーザー

    こんにちは。

    プラグインの中身を拝見しましたが、makeItemList()の処理が足りないためだと思います。

    スクロールした時に、表示を更新するのですが ←refresh()を実行
    その時に、Window_ItemList.prototype.makeItemList()を実行してしまっています。
    コード:
    Window_ItemList.prototype.makeItemList = function() {
        this._data = $gameParty.allItems().filter(function(item) {
            return this.includes(item);
        }, this);
        if (this.includes(null)) {
            this._data.push(null);
        }
    };
    
    コードを見て分かると思いますが、この処理でthis._dataを手持ちのアイテム($gameParty.allItems())で更新しているので
    表示が空っぽ(恐らく手持ちアイテムが無いため)になってしまい、空なのでカーソルも動かせなくなります。

    とりあえず、下のようなコードを追加すると、スクロールしても動きます。
    コード:
    Window_ActorItemEquip.prototype.makeItemList = function() {
        this._data = this._pocket._data;
    };
    
     
    #2
    神無月サスケしぐれん がいいね!しています
  3. しぐれん

    しぐれん ユーザー

    フトコロさん、迅速な回答ありがとうございます。
    Windowの_dataに代入する部分がmakeItemListなのですね。
    定義したところ、スクロールが動くようになりました。
     
    #3
    神無月サスケフトコロ がいいね!しています

このページを共有