ピクチャのドラッグ移動

ツキミ

ユーザー
このプラグインは、トリアコンタンさんの「ピクチャのボタン化」プラグインを機能拡張し、
ピクチャのドラッグ移動
・ドラッグ移動領域の制限
・ドラッグ中に特定の領域にいるとコモンイベントを呼び出す、もしくは任意のスイッチをONにする
などのことができる。


ご使用の際は、必ず最新バージョンの「ピクチャのボタン化」をインポートし、このプラグインを「ピクチャのボタン化」の下に置いてください。
ピクチャのボタン化 プラグインがない方は、是非トリアコンタンさんのツイッターからダウンロードしてください!
→@triacontane

また、「ピクチャのボタン化」のパラメータ(透明色を考慮、ピクチャ番号の変数番号など)を参照しますので、このプラグインにパラメータはありません。



よくある使用例:

P_DRAG 15
P_DRAG_RESTRICT_REGION 15 x 0~816
P_DRAG_RESTRICT_REGION 15 y 0~624
P_DRAG_CALL_CE 15 1 10
P_DRAG_CALL_CE_REGION 15 x 204~612
P_DRAG_CALL_CE_REGION 15 y 156~468

説明:
ピクチャ15番をドラッグ可能にし、ドラッグできる範囲を(0,0)~(816,624)にする。
(204,156)~(612,468)に入ると、10フレームおきにコモンイベント1番を呼び出す。
基本的にこの使用例をコピペをすれば大丈夫です。


・プラグインコマンド詳細
イベントコマンド「プラグインコマンド」から実行。
(引数の間は半角スペースで区切り、《》で括弧される引数は設定されなかった場合
 デフォルトで設定される)


---------------------------------------
ピクチャのドラッグ化 or
P_DRAG
[ピクチャID] [透明色を考慮] [軸制限] [リリースした場合EX]
 ・ピクチャをドラッグできるようにする。

 ・透明色を考慮のパラメータ(ON/OFF)を指定すると透明色を考慮するかを設定できます。
  ONにすると、ピクチャの透明な部分を掴んでもドラッグできません。

 ・軸制限のパラメータ(X/Y/ALL)はドラッグ移動可能な軸を設定します。
  X にすると、ピクチャは左右しか動けません。
  デフォルトはALL。

 ・リリースした場合EXのパラメータ(ON/OFF)は、マウスをピクチャ外でリリースした時、
  ピクチャのボタン化の「リリースした場合」のコモンイベントを呼び出す かを
  設定するパラメータです。 主に移動制限がある時にONにする。
  デフォルトはON。


 例:P_DRAG 15
    15番のピクチャをドラッグできるようにする。

   P_DRAG 20 ON X ON
    20番のピクチャをX軸に沿ってドラッグできるようにする。
    リリース時、マウスがピクチャ外でも、P_CALL_CE で設定された
    「リリースした場合」のコモンイベントを呼び出す。
    ※P_CALL_CEは「ピクチャのボタン化」のプラグインコマンドです。


---------------------------------------
ピクチャのドラッグ化解除 or
P_DRAG_REMOVE
[ピクチャID]
  ・ピクチャをドラッグできないようにする。
   ※設定も全部デフォルトに戻る。


 例:P_DRAG_REMOVE 15
    15番のピクチャをドラッグできないようにする。


---------------------------------------
ピクチャのドラッグ中強制リリース
or P_DRAG_FORCE_RELEASE

  ・ドラッグ中のピクチャを強制的にリリースさせます。


---------------------------------------
ピクチャのドラッグ領域制限 or
P_DRAG_RESTRICT_REGION
[ピクチャID] [X軸/Y軸] [範囲]
  ・ピクチャのドラッグ可能領域を制限する。

  ・範囲の書き方:
   x -100~200   x座標の移動範囲を -100~200 の間に制限する
   x ~250     x座標の移動範囲を 250 以下に制限する
   y ~       y座標の移動範囲は 全域

   また、範囲の前に ! を入れると範囲が反転する
   x !-100~200  x座標の移動範囲を -100~200以外のところに制限する

   デフォルトは x ~ と y ~ (全域移動可能)
   範囲の書き方図解:
   



 例:P_DRAG_RESTRICT_REGION 15 x 0~816
   P_DRAG_RESTRICT_REGION 15 y 0~624

    15番ピクチャのドラッグできる範囲を(0,0)~(816,624)にする。


---------------------------------------
ピクチャのドラッグトリガーイベント or
P_DRAG_CALL_CE
[ピクチャID] [コモンイベントID] [間隔フレーム]
  ・ドラッグ中、ピクチャがトリガー領域に入ると、一定間隔でコモンイベントを
   呼び出す

   ※トリガー領域の設定については、次のコマンドを見てください。

  ・間隔フレームの定義(デフォルトは1):
    1~:トリガー領域にあると間隔フレームおきに呼び出す。
     0:トリガー領域に入る度に呼び出す。
    -1 :一回のドラッグで一回しか呼び出さない。


 例:P_DRAG_CALL_CE 15 1 60
    15番のピクチャがトリガー領域に入ると60フレームおきに
    コモンイベント1番を呼び出す。


---------------------------------------
ピクチャのドラッグトリガー領域 or
P_DRAG_CALL_CE_REGION
[ピクチャID] [X軸/Y軸] [範囲]
  ・ピクチャのトリガー領域を設定する。
   ピクチャがトリガー領域に入ると、設定されたイベントが呼び出される。

  ・範囲の設定はドラッグ領域制限と同じです。
    デフォルトは x !~ と y !~ (全域トリガーしない)


 例:P_DRAG_CALL_CE_REGION 15 x 408~
   P_DRAG_CALL_CE_REGION 15 y 312~
    15番のピクチャがx座標が408以上、y座標が312以上の時、
    設定されたコモンイベントを呼び出す。


---------------------------------------
ピクチャのドラッグトリガースイッチ or
P_DRAG_CALL_SWITCH
[ピクチャID] [スイッチID] [間隔フレーム]
  ・ドラッグ中、ピクチャがトリガー領域にると、一定間隔でスイッチをONにする

 例:P_DRAG_CALL_SWITCH 15 33 20
    15番のピクチャがトリガー領域に入ると、20フレームおきに
    3番スイッチをONにする。


---------------------------------------
ピクチャのドラッグトリガーキーバインド or
P_DRAG_CALL_KEY_BIND
[ピクチャID] [スイッチID] [間隔フレーム]
  ・ドラッグ中、ピクチャがトリガー領域にあると、一定間隔で任意のボタンを
   押したことにします。
(ピクチャのボタン化のキーバインドを見てください)

 例:P_DRAG_KEY_BIND 15 ok 3
    15番のピクチャがトリガー領域に入ると、3フレームおきに決定キー(ok)を押したことにする。
 

Attachments

  • PictureDrag.js
    29.8 KB · 閲覧: 133
最後に編集:
ツキミ様

こんにちは。
このプラグインは思っていた以上に便利で、
すごいUIが組めそうです。大変感謝しております。

『ドラッグの強制リリース』を行うとドラッグ中でもそうでないときも、
『result is undefined』エラーを吐くので
コードを拝見しました。

すると22~636行目の

Scene_Base.prototype.pictureDragging = function() {
var result = [];
this._spriteset.iteratePictures(function(picture) {
if (picture._isDragging || picture._startDrag) result.push(picture._pictureId);
return true;
});
return result;
};
Scene_Base.prototype.forceReleasePicture = function() {
this._spriteset.iteratePictures(function(picture) {
if (picture._isDragging) picture._endDrag = true;
return true;
});
return result;
};

の部分で突っかかっているようです。
おそらくforceReleasePictureの関数内にあるresultが未定義なので発生するエラーだと思われます。
このreturnを取り除いたらエラーを吐かずに動くようになったのですが、
この対処法で問題ないでしょうか?
 
トップ