【解決済み】マウスポインタの変更

返信する
ちゃもももも
記事: 2
登録日時: 2024年3月08日(金) 21:17

【解決済み】マウスポインタの変更

投稿記事 by ちゃもももも »

お世話になっております。
初めての質問のため、何か失礼がありましたら申し訳ありません。

ツクールMZにて、ピクチャボタン(PictureCallCommonを使用)や選択肢にカーソルを合わせた際、マウスポインタ(マウスカーソル)を手のマーク(別の画像)にしてタッチできる部分を分かりやすくしたいと思っています。

一応トリアコンタン様の【MousePointerExtend】を導入してみましたが、エラーによりうまくいきませんでした。 (MV用に作られており、MZでは動作しない可能性があるのは把握しております。)
※エラー「Cannot read property 'style' of null」と表示される

用途に合うプラグインやその他方法などありましたらご教授いただけますと幸いです。
よろしくお願いいたします。
最後に編集したユーザー ちゃもももも [ 2024年5月17日(金) 15:36 ], 累計 1 回
すおう
記事: 38
登録日時: 2024年5月17日(金) 08:30

Re: マウスポインタの変更

投稿記事 by すおう »

MousePointerExtend.jsについては中身を以下のように修正したらMZでも使えました。
試してみてください

変更内容:プラグイン内の'GameCanvas'を'gameCanvas'に変更
※頭文字を小文字にしています
※通常、595行目、621行目に該当文字あり
すおう
記事: 38
登録日時: 2024年5月17日(金) 08:30

Re: マウスポインタの変更

投稿記事 by すおう »

それから自分の実力試しで以下プラグインを作ってみました。
こちらも初心者なのでうまくいかないかもしれませんがよければお試しください

※『PictureCallCommon.js』への対応はプラグインに追記が発生します。
 詳細はヘルプを参照してください
 また、かならずバックアップをとってください

コード: 全て選択

//=============================================================================
// RPG Maker MZ - カーソル上のポインタ判定
//=============================================================================
// Version
// 1.0.0 2024/05/17 初版
//=============================================================================
/*:
 * @target MZ
 * @plugindesc カーソル上のポインタ判定
 * @author すおう
 * @base PluginCommonBase
 * @orderAfter PictureCallCommon
 *
 * @help SUOU_PointerOnCursol.js
 * ポインタが選択肢や名前入力のカーソル上、またはメニューなどシステムボタン上に
 * あるときに指定のスイッチをONにします。カーソルから離れるとOFFになります
 * 別々の項目で指定スイッチに同じものを選ぶことは可能です
 * その場合、どれか該当のものが1つでもあればスイッチはONになります
 * 
 * 注意!!
 * 以降の対応は他者様のプラグインの中身を変更する内容になります
 * かならずバックアップをとってからおこなうようにしてください
 * プラグイン改造によっていかなる不具合が起きても本製作者は責任を負いません
 * 
 * ・『PictureCallCommon.js』(製作:トリアコンタン様)への対応について
 *   プラグイン最後尾の『})();』の1つ前の行に以下の内容を挿入してください
 * 
 *   window.PictureTouch = PictureTouch;
 * 
 * 
 * @param SwitchForPointerOnCursor
 * @text カーソル判定用スイッチ
 * @desc カーソル上にポインタがあるときにONになるスイッチ
 * @type switch
 * @default 0
 * 
 * @param SwitchForPointerOnSpriteButton
 * @text システムボタン判定用スイッチ
 * @desc システムボタン上にポインタがあるときにONになるスイッチ
 * @type switch
 * @default 0
 * 
 * @param SwitchesListForPointerOnPicture
 * @text ピクチャボタン判定用スイッチリスト
 * @desc 『PictureCallCommon.js』対応用、ヘルプ参照。ボタン化したピクチャ上にポインタがあるときにONになるスイッチリスト
 * @type struct<List>[]
 */
/*~struct~List:
 * @param Switch
 * @text 判定用スイッチ
 * @desc ボタン化したピクチャのうち、指定のトリガー種別が登録されているものの上にポインタがあるときにONになるスイッチ
 * @type switch
 * @default 0
 * 
 * @param Trigger
 * @text トリガー種別
 * @desc ここで指定したトリガー種別が登録されているピクチャ上にポインタがあると、判定用スイッチがONになります
 * @default 1
 * @type select
 * @option 1:クリックした場合
 * @value 1
 * @option 2:右クリックした場合
 * @value 2
 * @option 3:長押しした場合
 * @value 3
 * @option 4:マウスをピクチャに重ねた場合
 * @value 4
 * @option 5:マウスをピクチャから放した場合
 * @value 5
 * @option 6:クリックを解放(リリース)した場合
 * @value 6
 * @option 7:クリックした場合(かつ長押しの際の繰り返しを考慮)
 * @value 7
 * @option 8:クリックしている間ずっと
 * @value 8
 * @option 9:ホイールクリックした場合(PCの場合のみ有効)
 * @value 9
 * @option 10:ダブルクリックした場合
 * @value 10
 * @option 11:マウスをピクチャ内で移動した場合
 * @value 11
 * @option 12:マウスを押しつつピクチャ内で移動した場合
 * @value 12
 * @option 13:フリック(マウス押下状態で指定距離以上動かす)した場合
 * @value 13
 * 
 */
(() => {
    'use strict';
    const script = document.currentScript;
    const param  = PluginManagerEx.createParameter(script);

    //=============================================================================
    // シーン更新時の頭にスイッチを全てOFFにする
    //=============================================================================
    const _Scene_Base_update = Scene_Base.prototype.update;
    Scene_Base.prototype.update = function() {
        this.clearSwitchesForPointer();
        _Scene_Base_update.apply(this, arguments);
    };

    Scene_Base.prototype.clearSwitchesForPointer = function(){
        $gameSwitches.setValue(param.SwitchForPointerOnCursor, false);
        $gameSwitches.setValue(param.SwitchForPointerOnSpriteButton, false);
        param.SwitchesListForPointerOnPicture.forEach((element) => $gameSwitches.setValue(element.Switch, false)); 
    };
    
    //=============================================================================
    // カーソル上のポインタ判定
    //=============================================================================
    const _Window_Selectable_update = Window_Selectable.prototype.update;
    Window_Selectable.prototype.update = function() {
        _Window_Selectable_update.apply(this, arguments);
        this.updateSwitchForPointer();
    };

    Window_Selectable.prototype.updateSwitchForPointer = function(){
        if(this.isOpenAndActive() && this.isHoverEnabled() && this.hitIndex() >= 0){
            $gameSwitches.setValue(param.SwitchForPointerOnCursor, true);
        }
    };

    //=============================================================================
    // システムボタン上のポインタ判定
    //=============================================================================
    const _Sprite_Button_update = Sprite_Button.prototype.update;
    Sprite_Button.prototype.update = function() {
        _Sprite_Button_update.apply(this, arguments);
        this.updateSwitchForPointer();
    };

    Sprite_Button.prototype.updateSwitchForPointer = function(){
        if(this._hovered){
            $gameSwitches.setValue(param.SwitchForPointerOnSpriteButton, true);
        }
    };

    //=============================================================================
    // ボタン化したピクチャ上のポインタ判定
    //=============================================================================
    if(window.PictureTouch){
        const _PictureTouch_update = PictureTouch.prototype.update;
        PictureTouch.prototype.update = function(){
            _PictureTouch_update.apply(this, arguments);
            this.updateSwitchForPointer();
        };

        PictureTouch.prototype.updateSwitchForPointer = function(){
            for(const element of param.SwitchesListForPointerOnPicture){
                if(this.isOnPicturePos() && this.findPictureEvent(this._pictureId, element.Trigger)){
                    $gameSwitches.setValue(element.Switch, true);
                }
            };
        };
    };

})();
画像
画像
画像
画像
画像
画像
ちゃもももも
記事: 2
登録日時: 2024年3月08日(金) 21:17

Re: マウスポインタの変更

投稿記事 by ちゃもももも »

すおうさん、回答ありがとうございます!

「MousePointerExtend.js」、「SUOU_PointerOnCursol.js」どちらも問題なく動作し
タッチ可能箇所でのカーソルの変化を確認いたしました…!

多分すおうさんが作ってくださったプラグインがなかったら、別の点でまた詰まっていたと思うので
めちゃくちゃ助かりました、本当にありがとうございます天才です!!
返信する

“MZ:質問”に戻る