设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1414|回复: 0
打印 上一主题 下一主题

[有事请教] 插件中加入一个开关在游戏中自由操控开启或者关闭?

[复制链接]

Lv4.逐梦者

梦石
0
星屑
5156
在线时间
1355 小时
注册时间
2018-1-16
帖子
391
跳转到指定楼层
1
发表于 2021-3-29 09:12:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 l734273398 于 2021-3-29 09:13 编辑

如题:大佬们有没有帮帮忙的,在这个插件中加入一个开关,使其可以在游戏中自由开启或者关闭的,万分感激啊


JAVASCRIPT 代码复制
  1. //=============================================================================
  2. // UCHU_MobileOperation.js
  3. // Version: 1.1.4
  4. //----------------------------------------------------------------------------
  5. // Copyright (c) 2015 uchuzine
  6. // Released under the MIT license
  7. // [url]http://opensource.org/licenses/mit-license.php[/url]
  8. //=============================================================================
  9.  
  10. /*:
  11. @plugindesc
  12. スマホ操作用プラグイン。横持ち/縦持ちに対応した仮想ボタン、
  13. タッチ操作の方法を追加拡張し、スマホプレイを快適にします。
  14. @author
  15. uchuzine
  16. @help
  17. UCHU_MobileOperation (Version: 1.1.4)
  18. ------------------------------------------------------------------------------
  19. ■更新履歴
  20. ------------------------------------------------------------------------------
  21. 1.1.4 2015/12/04  画面下部メッセージ表示後に下記の問題が再発する不具合を修正
  22. 1.1.3 2015/11/29  画面左上にボタンを設置した際にボタンが押せない不具合を修正
  23. 1.1.2 2015/11/24  パラメータを変更できない不具合を修正
  24. 1.1.1 2015/11/23  PC上での仮想ボタン操作時の不具合を修正
  25. 1.1.0 2015/11/17  「AnalogMove.js」使用時のアナログ移動に対応。下記説明を参照
  26. 1.0.0 2015/11/15 プラグイン公開
  27.  
  28. ------------------------------------------------------------------------------
  29. ■特徴
  30. ------------------------------------------------------------------------------
  31. プラグイン作成にあたり、por Masked氏のMBS_MobileDirPad.jsを参考にしています。
  32.  
  33. ○本プラグインの特徴
  34. ・ゲーム画面外(黒帯部分)にボタンを設置するため、プレイ画面に干渉しにくい
  35. ・パッドやボタンは個別に表示/非表示の切り替えが可能
  36. ・ボタンの基準点を画面四隅のいずれかに指定でき、縦持ち操作に対応可能
  37. ・方向パッドの操作性を重視し、タッチ判定領域、斜め方向の感度など調整可能
  38.  (詳細は下記の説明を参照)
  39. ・方向パッドによる移動と、デフォルトの目的地タッチによる移動を併用可能
  40. ・特定のタッチ操作、ジェスチャーによるボタン操作の拡張
  41.  
  42. これらを利用し、
  43.  
  44. ・仮想十字キーは使わずに、MENUボタンと決定ボタンのみ使用
  45. ・ボタンは全て使用せず、画面長押しでオート連打、画面外タッチでメニュー呼出
  46.  
  47. といった使い方もできます。
  48.  
  49. ------------------------------------------------------------------------------
  50. ■一部のパラメータの説明
  51. ------------------------------------------------------------------------------
  52. ▼ DPad OpelationRange(方向パッド作動領域)‥‥
  53. 方向パッド画像の表示サイズに対する、タッチ判定領域の大きさを倍率で指定します。
  54. 数値を上げても見た目は変わりませんが、画像の中心から外側に判定が広がります。
  55. 例)
  56. 「1」のとき‥‥画像のサイズがタッチ判定の大きさになる(画像の内接円の中のみ)
  57. 「2」のとき‥‥タッチ判定の大きさが縦横2倍になる(画像の外側に50%ずつ広がる)
  58.  
  59. 数値を上げることで操作ミスを防ぎ、操作性を上げることができますが
  60. 上げ過ぎて他のボタン等に重なってしまわないように注意してください。
  61.  
  62. ▼ DPad DiagonalRange(方向パッドの斜め方向範囲)‥‥
  63. 方向の判定は、パッド画像の対角線を境界線にして上下左右に分けていますが、
  64. この数値を上げると、対角線上をタッチしたときにその両側の方向がオンになり
  65. (「右」+「上」など)、8方向判定ができるようになります。
  66. 8方向移動のプラグインを使用している時などは、この数値を設定してください。
  67.  
  68. 数値の大きさが斜め判定角度の広さとなり、「0~1」の範囲で指定します
  69. 例)
  70. 「0」のとき‥‥上下左右の4方向のみ入力可能。
  71. 「0.5」のとき‥均等8分割の8方向入力が可能。
  72. 「1」のとき‥‥「右上」「右下」「左上」「左下」の4方向入力。
  73.  
  74. 数値を上げるほど、「上を押すつもりが右上になっていた」等のミスが起こるため
  75. 4方向で問題ない場合は、「0」を指定すると操作ミスが最小限になります。
  76.  
  77.  
  78. (var1.1.0より追加)
  79. ▼ AnalogMove(アナログ移動)‥‥
  80. サンシロ様のプラグイン「AnalogMove.js」使用時に、アナログ移動を可能にします。
  81. 方向パッドの中心からタッチ位置の距離と角度で、ドット単位の移動ができます。
  82. 使用の際はプラグインマネージャーで、先に「AnalogMove.js」を読み込み
  83. こちらのパラメータ「AnalogMove」をtrueに変えてください。
  84. ※アナログ移動使用中は、「DPad DiagonalRange」の数値は無視されます。
  85.  
  86. ▼ AnalogSensitivity(入力感度)‥‥
  87. 「AnalogSensitivity」は入力感度で、数値を上げるほど
  88. 最大値(最大スピード)まで入力するのに必要な指の動きが小さくなります。
  89. 例)
  90. 「1」のとき‥‥入力判定の外端で最大値に。大きな指の移動が必要。
  91. 「DPad OpelationRange」と同じとき‥‥方向パッド画像の外端で最大値に。
  92.  
  93. DPad OpelationRangeよりも大きめの数値を指定すると、入力が楽になります。
  94. (DPad OpelationRangeの初期値1.3に対し、AnalogSensitivityの初期値は1.8です)
  95.  
  96. ------------------------------------------------------------------------------
  97. ■パッド、ボタン画像について
  98. ------------------------------------------------------------------------------
  99. ・画像ファイルは任意のサイズで作成可能ですが、縦横比1:1で作成してください。
  100.  表示の際は、「DPad Size」で指定したpixel数にリサイズされます。
  101.  ボタン画像も同様です。
  102. ・方向パッドのグラフィックの中心が画像の中心になるようにしてください。
  103.  
  104.  
  105.  
  106. @param ---PC Option---
  107. @default
  108.  
  109. @param PC BtnDisplay
  110. @desc PCで実行時も、仮想ボタンを表示する:true しない:false
  111. 初期値:false
  112. @default false
  113.  
  114. @param PC TouchExtend
  115. @desc PCで実行時も、タッチの操作拡張を有効にする:true しない:false
  116. 初期値:true;
  117. @default true
  118.  
  119. @param ---File Path---
  120. @default
  121.  
  122. @param DPad Image
  123. @desc 方向パッド画像のファイルパス
  124. @default ./img/system/DirPad.png
  125.  
  126. @param ActionBtn Image
  127. @desc 決定ボタン画像のファイルパス
  128. @default ./img/system/ActionButton.png
  129.  
  130. @param CancelBtn Image
  131. @desc キャンセル(メニュー)ボタン画像のファイルパス
  132. @default ./img/system/CancelButton.png
  133.  
  134. @param ---Button Customize---
  135. @default
  136.  
  137. @param Button Opacity
  138. @desc ボタンの不透明度(0~1) 初期値:0.7
  139. @default 0.7
  140.  
  141. @param Vertical BtnZoom
  142. @desc スマホ縦持ちで表示したときの全ボタンの拡大率
  143. 初期値:1.7
  144. @default 1.7
  145.  
  146. @param Tablet BtnZoom
  147. @desc タブレット横持ちで表示したときの全ボタンの拡大率
  148. 初期値:0.8
  149. @default 0.8
  150.  
  151. @param TabVertical BtnZoom
  152. @desc タブレット縦持ちで表示したときの全ボタンの拡大率
  153. 初期値:1.1
  154. @default 1.1
  155.  
  156. @param HideButton OnMessage
  157. @desc 画面下部にメッセージ表示時、仮想ボタンの表示順位をゲーム画面の下に下げる:true そのまま:false
  158. 初期値:true
  159. @default true
  160.  
  161. @param DPad Visible
  162. @desc 方向パッドを表示する:true しない:false  初期値:true
  163. @default true
  164.  
  165. @param DPad Size
  166. @desc 方向パッドの大きさ(px)。 初期値:200
  167. @default 200
  168.  
  169. @param DPad Margin
  170. @desc 方向パッド画像の位置。画面端からの隙間の大きさで指定。
  171.  (左からの幅; 下からの幅) 初期値:10; 10
  172. @default 10; 10
  173.  
  174. @param DPad Orientation
  175. @desc 方向パッドの基準位置を、左下以外に変えたい場合。
  176. left か right; top か bottom で指定。 初期値:left; bottom
  177. @default left; bottom
  178.  
  179. @param DPad OpelationRange
  180. @desc 方向パッド画像に対する、タッチの作動範囲(倍率、1~)
  181. 画像の外側にタッチ判定を広げ、操作ミスを防ぐ。初期値:1.3
  182. @default 1.3
  183.  
  184. @param DPad DiagonalRange
  185. @desc 方向パッド斜め方向の判定の広さ(0~1)。斜めに入りやすくする程、操作がブレやすくなる。4方向でよい場合は0に。初期値:0.3;
  186. @default 0.3
  187.  
  188. @param ActionBtn Visible
  189. @desc 決定ボタンを表示する:true しない:false  初期値:true
  190. @default true
  191.  
  192. @param ActionBtn Size
  193. @desc 決定ボタンの大きさ(px)。 初期値:100
  194. @default 100
  195.  
  196. @param ActionBtn Margin
  197. @desc 決定ボタンの位置。画面端からの隙間の大きさで指定。
  198.  (右からの幅; 下からの幅) 初期値:10; 90
  199. @default 10; 90
  200.  
  201. @param ActionBtn Orientation
  202. @desc 決定ボタンの基準位置を、右下以外に変えたい場合。
  203. left か right; top か bottom で指定。 初期値:right; bottom
  204. @default right; bottom
  205.  
  206. @param CancelBtn Visible
  207. @desc キャンセル(メニュー)ボタンを表示する:true しない:false
  208. 初期値:true
  209. @default true
  210.  
  211. @param CancelBtn Size
  212. @desc キャンセルボタンの大きさ(px)。 初期値:100
  213. @default 100
  214.  
  215. @param CancelBtn Margin
  216. @desc キャンセルボタンの位置。画面端からの隙間の大きさで指定。
  217.  (右からの幅; 下からの幅) 初期値:110; 10
  218. @default 110; 10
  219.  
  220. @param CancelBtn Orientation
  221. @desc キャンセルボタンの基準位置を、右下以外に変えたい場合。
  222. left か right; top か bottomで指定。 初期値:right; bottom
  223. @default right; bottom
  224.  
  225.  
  226. @param ---TouchInput Extend---
  227. @default
  228.  
  229. @param Flick PageUp-PageDown
  230. @desc 画面上を左右にフリックすると、PageUp/PageDown操作になる。
  231. ステータス画面でキャラを切り替えたい時などに。初期値:true
  232. @default true
  233.  
  234. @param HoldCanvas ActionBtn
  235. @desc 画面を長押しすると、決定ボタンを押した状態になる。
  236. 初期値:true
  237. @default true
  238.  
  239. @param OutCanvas CancelBtn
  240. @desc ゲーム画面外の黒帯部分全体が、キャンセルボタン扱いになる。
  241. 初期値:false
  242. @default false
  243.  
  244. @param OutCanvas ActionBtn
  245. @desc ゲーム画面外の黒帯部分全体が、決定ボタン扱いになる。
  246. 初期値:false
  247. @default false
  248.  
  249. @param --!need AnalogMove.js!--
  250. @default
  251.  
  252. @param Analog Move
  253. @desc [※AnalogMove.jsを先に読み込んでください]
  254. 方向パッドでアナログ移動ができるようにする。初期値:false
  255. @default false
  256.  
  257. @param Analog Sensitivity
  258. @desc アナログ移動の入力感度。数値を上げると、細かい指の動きでキャラが大きく動く。
  259. 初期値:1.8
  260. @default 1.8
  261.  
  262. */
  263.  
  264. var Imported = Imported || {};
  265. Imported.UCHU_MobileOperation = "1.1.4";
  266.  
  267. var UCHU_MobileOperation = {};
  268.  
  269. (function() {
  270.     "use strict";
  271.  
  272.         //-----------------------------------------------------------------------------
  273.         // Setup
  274.  
  275.         var Parameters = PluginManager.parameters('UCHU_MobileOperation');
  276.         var PRM = PRM || {};
  277.  
  278.         PRM.url=[];
  279.         PRM.visible=[];
  280.         PRM.size=[];
  281.         PRM.pos=[];
  282.         PRM.spot=[];
  283.  
  284.         PRM.pcBtn = Boolean(Parameters["PC BtnDisplay"] === 'true' || false);
  285.         PRM.pcExt = Boolean(Parameters["PC TouchExtend"] === 'true' || false);
  286.         PRM.url[0] = String(Parameters["DPad Image"]);
  287.         PRM.url[1] = String(Parameters["ActionBtn Image"]);
  288.         PRM.url[2] = String(Parameters["CancelBtn Image"]);
  289.         PRM.opacity = Number(Parameters["Button Opacity"]);
  290.         PRM.vZoom = Number(Parameters["Vertical BtnZoom"]);
  291.         PRM.tabZoom = Number(Parameters["Tablet BtnZoom"]);
  292.         PRM.tabvZoom = Number(Parameters["TabVertical BtnZoom"]);
  293.         PRM.hideBtn = Boolean(Parameters["HideButton OnMessage"] === 'true' || false);
  294.         PRM.visible[0] = Boolean(Parameters["DPad Visible"] === 'true' || false);
  295.         PRM.size[0] = Number(Parameters["DPad Size"]);
  296.         PRM.pos[0] =Parameters["DPad Margin"].split(";");
  297.         PRM.spot[0] = Parameters["DPad Orientation"].split(";");
  298.         PRM.pad_scale = Number(Parameters["DPad OpelationRange"]);
  299.         PRM.pad_dia = Math.max(0,Math.min(1,(1-Number(Parameters["DPad DiagonalRange"]))));
  300.         PRM.visible[1] = Boolean(Parameters["ActionBtn Visible"] === 'true' || false);
  301.         PRM.size[1] = Number(Parameters["ActionBtn Size"]);
  302.         PRM.pos[1] = Parameters["ActionBtn Margin"].split(";");
  303.         PRM.spot[1] = Parameters["ActionBtn Orientation"].split(";");
  304.         PRM.visible[2] = Boolean(Parameters["CancelBtn Visible"] === 'true' || false);
  305.         PRM.size[2] = Number(Parameters["CancelBtn Size"]);
  306.         PRM.pos[2] = Parameters["CancelBtn Margin"].split(";");
  307.         PRM.spot[2] = Parameters["CancelBtn Orientation"].split(";");
  308.         PRM.flickpage = Boolean(Parameters["Flick PageUp-PageDown"] === 'true' || false);
  309.         PRM.holdaction = Boolean(Parameters["HoldCanvas ActionBtn"] === 'true' || false);
  310.         PRM.outcansel = Boolean(Parameters["OutCanvas CancelBtn"] === 'true' || false);
  311.         PRM.outaction = Boolean(Parameters["OutCanvas ActionBtn"] === 'true' || false);
  312.         PRM.analogmove = Boolean(Parameters["Analog Move"] === 'true' || false);
  313.         PRM.sensitivity = Number(Parameters["Analog Sensitivity"]);
  314.  
  315.         var btn_id=["DirPad","ok","escape"];
  316.         var current_zoom=1;       
  317.         var st_x = 0;
  318.         var st_y = 0;
  319.         var pad_range=PRM.size[0]*PRM.pad_scale;
  320.         var pad_size=pad_range*current_zoom/2;
  321.         var Btn_ready=false;
  322.         var Btn_hide=false;
  323.         var PressBtn=false;
  324.         var dirx=0;
  325.         var diry=0;
  326.         var touchx=0;
  327.         var touchy=0;
  328.         var autofire=false;
  329.         var hvzoom=[1, PRM.vZoom];
  330.         var ua = (function(u){
  331.           return {
  332.             Tablet:(u.indexOf("windows") != -1 && u.indexOf("touch") != -1) || u.indexOf("ipad") != -1 || (u.indexOf("android") != -1 && u.indexOf("mobile") == -1) || (u.indexOf("firefox") != -1 && u.indexOf("tablet") != -1) || u.indexOf("kindle") != -1 || u.indexOf("silk") != -1 || u.indexOf("playbook") != -1
  333.           };
  334.         })(window.navigator.userAgent.toLowerCase());
  335.  
  336.         if(ua.Tablet){
  337.                 hvzoom=[PRM.tabZoom, PRM.tabvZoom];
  338.         }
  339.         if (!Utils.isMobileDevice() && !PRM.pcBtn) {PRM.visible[0]=PRM.visible[1]=PRM.visible[2]=false;}
  340.  
  341.         //-----------------------------------------------------------------------------
  342.         // Locate_DirPad
  343.  
  344.         function Locate_DirPad() {
  345.                 this.initialize.apply(this, arguments);
  346.         }
  347.  
  348.  
  349.         Locate_DirPad.prototype.initialize = function() {
  350.                 var img = new Image();
  351.                 var url = PRM.url[0];
  352.                 img.onerror = function() {Graphics.printError('DirPad Image was Not Found:',url);};
  353.                 img.src = url;
  354.                 img = null;
  355.                 this.Div = document.createElement("div");
  356.                 this.Div.id = 'Dirpad';
  357.                 this.Div.style.position = 'fixed';
  358.                 this.Div.style[PRM.spot[0][0].replace(/\s+/g, "")] = String(PRM.pos[0][0]-(pad_range-PRM.size[0])/2)+'px';
  359.                 this.Div.style[PRM.spot[0][1].replace(/\s+/g, "")] = String(PRM.pos[0][1]-(pad_range-PRM.size[0])/2)+'px';
  360.                 this.Div.style.width = pad_range+'px';
  361.                 this.Div.style.height = pad_range+'px';
  362.                 this.Div.style.opacity = PRM.opacity;
  363.                 this.Div.style.zIndex = '11';
  364.                 this.Div.style.userSelect="none";
  365.                 this.Div.style["-webkit-tap-highlight-color"]="rgba(0,0,0,0)";
  366.                 this.Div.style.background = 'url('+PRM.url[0]+') 50% 50% / '+String(Math.round(PRM.size[0]/pad_range*100))+'% no-repeat';
  367.  
  368.                 if(!Utils.isMobileDevice() && PRM.pcBtn){
  369.                         this.Div.addEventListener('mousedown', function(e) {
  370.                           if (!SceneManager.isSceneChanging()){dirope(e.layerX,e.layerY,true);PressBtn=true;}
  371.                         }, false);
  372.                         this.Div.addEventListener('mousemove', function(e) {
  373.                           if(PressBtn && !SceneManager.isSceneChanging()){dirope(e.layerX,e.layerY,false);}
  374.                         }, false);
  375.                         this.Div.addEventListener('mouseup', function() {
  376.                                 disope();PressBtn=false;
  377.                         }, false);
  378.                         this.Div.addEventListener('mouseout', function() {
  379.                             disope();PressBtn=false;
  380.                         }, false);
  381.                 }
  382.                 this.Div.addEventListener('touchstart', function(e) {
  383.                         PressBtn=true;
  384.                         if (!SceneManager.isSceneChanging()){dirope(e.touches[0].clientX-dirx, e.touches[0].clientY-diry,true)};
  385.                 }, false);
  386.                 this.Div.addEventListener('touchmove', function(e) {
  387.                         if (!SceneManager.isSceneChanging()){dirope(e.touches[0].clientX-dirx, e.touches[0].clientY-diry,false)};
  388.                         PressBtn=true;
  389.                 }, false);
  390.                 this.Div.addEventListener('touchend', function() {
  391.                         disope();PressBtn=false;
  392.                 }, false);
  393.                         document.body.appendChild(this.Div);
  394.         };
  395.  
  396.         function dirope(xx,yy,st) {
  397.                 touchx=(xx-pad_size)/pad_size;
  398.                 touchy=(yy-pad_size)/pad_size;
  399.                 if(st && Math.sqrt(touchx*touchx+touchy*touchy)>1){
  400.                         disope();
  401.                 }else{
  402.                         if(touchx>Math.abs(touchy)*PRM.pad_dia){Input._currentState['right']=true;Input._currentState['left']=false;}
  403.                         else if(touchx<-Math.abs(touchy)*PRM.pad_dia){Input._currentState['left']=true;Input._currentState['right']=false;}
  404.                         else{Input._currentState['left']=false;Input._currentState['right']=false;}
  405.                         if(touchy>Math.abs(touchx)*PRM.pad_dia){Input._currentState['down']=true;Input._currentState['up']=false;}
  406.                         else if(touchy<-Math.abs(touchx)*PRM.pad_dia){Input._currentState['up']=true;Input._currentState['down']=false;}
  407.                         else{Input._currentState['up']=false;Input._currentState['down']=false;}
  408.                 }
  409.         }
  410.         function disope() {
  411.                 touchx=0; touchy=0;
  412.                 Input._currentState['up']=false;
  413.                 Input._currentState['down']=false;
  414.                 Input._currentState['left']=false;
  415.                 Input._currentState['right']=false;
  416.         }
  417.  
  418.         //-----------------------------------------------------------------------------
  419.         // Locate_Button
  420.  
  421.         function Locate_Button() {
  422.                 this.initialize.apply(this, arguments);
  423.         }
  424.         Locate_Button.prototype.initialize = function(type) {
  425.                 var img = new Image();
  426.                 var url = PRM.url[type];
  427.                 img.onerror = function() {Graphics.printError('Button Image was Not Found:',url);};
  428.                 img.src = url;
  429.                 img = null;
  430.                 this.Div = document.createElement("div");
  431.                 this.Div.id = btn_id[type]+'Btn';
  432.                 this.Div.style.position = 'fixed';
  433.                 this.Div.style[PRM.spot[type][0].replace(/\s+/g, "")] = PRM.pos[type][0]+'px';
  434.                 this.Div.style[PRM.spot[type][1].replace(/\s+/g, "")] = PRM.pos[type][1]+'px';
  435.                 this.Div.style.width = PRM.size[type]+'px';
  436.                 this.Div.style.height = PRM.size[type]+'px';
  437.                 this.Div.style.opacity = PRM.opacity;
  438.                 this.Div.style.zIndex = '11';
  439.                 this.Div.style.userSelect="none";
  440.                 this.Div.style.background = 'url('+PRM.url[type]+') 0 0 / cover no-repeat';
  441.  
  442.                 if(!Utils.isMobileDevice() && PRM.pcBtn){
  443.                         this.Div.addEventListener('mousedown', function() {
  444.                                 Input._currentState[btn_id[type]] = true;PressBtn=true;
  445.                         }, false);
  446.                         this.Div.addEventListener('mouseover', function() {
  447.                           if(TouchInput.isPressed()){Input._currentState[btn_id[type]] = true;PressBtn=true;return false;}
  448.                         }, false);
  449.                         this.Div.addEventListener('mouseup', function() {
  450.                           Input._currentState[btn_id[type]] = false;PressBtn=false;
  451.                         }, false);
  452.                         this.Div.addEventListener('mouseout', function() {
  453.                           Input._currentState[btn_id[type]] = false;PressBtn=false;
  454.                         }, false);
  455.                 }
  456.  
  457.                 this.Div.addEventListener('touchstart', function() {
  458.                         if (!SceneManager.isSceneChanging()){Input._currentState[btn_id[type]] = true;PressBtn=true;}
  459.                 }, false);
  460.                 this.Div.addEventListener('touchend', function() {
  461.                         Input._currentState[btn_id[type]] = false;PressBtn=false;
  462.                 }, false);
  463.  
  464.                 document.body.appendChild(this.Div);
  465.         };
  466.  
  467.         //-----------------------------------------------------------------------------
  468.         // Replace function
  469.  
  470.         var Scene_Base_start = Scene_Base.prototype.start;
  471.         Scene_Base.prototype.start = function() {
  472.                 Scene_Base_start.call(this);
  473.             if (Utils.isMobileDevice() || PRM.pcBtn) {
  474.                         if(!Btn_ready){
  475.                                 Btn_ready=true;
  476.                                 if(PRM.visible[0]){this.DirPad = new Locate_DirPad();}
  477.                                 if(PRM.visible[1]){this.okButton = new Locate_Button(1);}
  478.                                 if(PRM.visible[2]){this.canselButton = new Locate_Button(2);}
  479.                                 Graphics._updateRealScale();
  480.                                 document.documentElement.style["-webkit-user-select"]="none";
  481.                                 document.addEventListener("touchmove", function(evt) {evt.preventDefault();}, false);
  482.                         }
  483.                 }
  484.         };
  485.  
  486.         if(PRM.visible[0] || PRM.visible[1] || PRM.visible[2]){
  487.  
  488.                 var Game_Temp_setDestination = Game_Temp.prototype.setDestination;
  489.                 Game_Temp.prototype.setDestination = function(x, y) {
  490.                         Game_Temp_setDestination.apply(this, arguments);
  491.                         if(PressBtn){
  492.                                 this._destinationX = null;
  493.                                 this._destinationY = null;
  494.                         }
  495.                 };
  496.  
  497.                 var Graphics_updateRealScale = Graphics._updateRealScale;
  498.                 Graphics._updateRealScale = function() {
  499.                         Graphics_updateRealScale.call(this);
  500.                         if (this._stretchEnabled) {
  501.                                 if(document.getElementById("Dirpad")){
  502.                                 if(window.innerWidth<window.innerHeight){current_zoom=hvzoom[1];}else{current_zoom=hvzoom[0];}
  503.                                         pad_size=pad_range*current_zoom/2;
  504.                                         if(PRM.visible[0]){
  505.                                                 document.getElementById("Dirpad").style.zoom=current_zoom;
  506.                                                 dirx=document.getElementById("Dirpad").offsetLeft*current_zoom;
  507.                                                 diry=document.getElementById("Dirpad").offsetTop*current_zoom;
  508.                                         }
  509.                                         if(PRM.visible[1]){document.getElementById("okBtn").style.zoom=current_zoom;}
  510.                                         if(PRM.visible[2]){document.getElementById("escapeBtn").style.zoom=current_zoom;}
  511.                                 }
  512.                         }
  513.                 };
  514.         }
  515.  
  516.         //-----------------------------------------------------------------------------
  517.         // Option
  518.  
  519.         if(PRM.hideBtn){
  520.                 Scene_Base.prototype.hideUserInterface = function() {
  521.                         if (Utils.isMobileDevice() || PRM.pcBtn) {Btn_hide=true;
  522.                                 if(PRM.visible[0]){document.getElementById("Dirpad").style.zIndex = '0';}
  523.                                 if(PRM.visible[1]){document.getElementById("okBtn").style.zIndex = '0';}
  524.                                 if(PRM.visible[2]){document.getElementById("escapeBtn").style.zIndex = '0';}
  525.                         }
  526.                 };
  527.                 Scene_Base.prototype.showUserInterface = function() {
  528.                         if (Utils.isMobileDevice() && !Btn_hide || PRM.pcBtn && !Btn_hide) {
  529.                                 if(PRM.visible[0]){document.getElementById("Dirpad").style.zIndex = '11';}
  530.                                 if(PRM.visible[1]){document.getElementById("okBtn").style.zIndex = '11';}
  531.                                 if(PRM.visible[2]){document.getElementById("escapeBtn").style.zIndex = '11';}
  532.                         }
  533.                 };
  534.  
  535.                 var Scene_Map_createMessageWindows = Scene_Map.prototype.createMessageWindow;
  536.                 var Scene_Map_processMapTouch = Scene_Map.prototype.processMapTouch;
  537.                 var Scene_Map_terminate = Scene_Map.prototype.terminate;
  538.  
  539.                 Scene_Map.prototype.createMessageWindow = function() {
  540.                         Scene_Map_createMessageWindows.call(this);
  541.                         var oldStartMessage = this._messageWindow.startMessage;
  542.                         var oldTerminateMessage = this._messageWindow.terminateMessage;
  543.                         var scene = this;
  544.  
  545.                         this._messageWindow.startMessage = function() {       
  546.                                 oldStartMessage.apply(this, arguments);
  547.                                 if($gameMessage.positionType()==2){
  548.                                         //scene.hideUserInterface();
  549.                                 }
  550.                         };
  551.                         Window_Message.prototype.terminateMessage = function() {
  552.                                 oldTerminateMessage.apply(this, arguments);
  553.                                 Btn_hide=false;
  554.                                 setTimeout("Scene_Base.prototype.showUserInterface();", 200);
  555.                         };
  556.                 };
  557.  
  558.                 var Scene_Battle_createMessageWindow = Scene_Battle.prototype.createMessageWindow;
  559.                 Scene_Battle.prototype.createMessageWindow = function() {
  560.                         Scene_Battle_createMessageWindow.call(this);
  561.                         var oldStartMessage = this._messageWindow.startMessage;
  562.                         var oldTerminateMessage = this._messageWindow.terminateMessage;
  563.                         var scene = this;
  564.                         this._messageWindow.startMessage = function() {
  565.                                 oldStartMessage.apply(this, arguments);
  566.                                 if($gameMessage.positionType()==2){
  567.                                         //scene.hideUserInterface();
  568.                                 }
  569.                         };
  570.                         Window_Message.prototype.terminateMessage = function() {
  571.                                 oldTerminateMessage.apply(this, arguments);
  572.                                 Btn_hide=false;
  573.                                 setTimeout("Scene_Base.prototype.showUserInterface();", 200);
  574.                         };
  575.                 };
  576.         }
  577.  
  578.         if(Utils.isMobileDevice() || PRM.pcExt){
  579.                 if(PRM.holdaction){
  580.                         var TouchInput_update = TouchInput.update;
  581.                         TouchInput.update = function() {
  582.                                 TouchInput_update.call(this);
  583.                                 if (!PressBtn && TouchInput.isLongPressed()) {
  584.                                         Input._currentState['ok']=true;autofire=true;
  585.                                 }
  586.                                 if(!TouchInput.isPressed() && autofire){
  587.                                         Input._currentState['ok']=false;autofire=false;
  588.                                 }
  589.                         };
  590.                 }
  591.  
  592.                 if(PRM.flickpage || PRM.outcansel || PRM.outaction){
  593.                         TouchInput._endRequest= function(type) {
  594.                                 Input._currentState[type]=false;
  595.                         }
  596.                         if(Utils.isMobileDevice()){
  597.                                 var TouchInput_onTouchStart = TouchInput._onTouchStart;
  598.                                 TouchInput._onTouchStart = function(event) {
  599.                                     TouchInput_onTouchStart.apply(this, arguments);
  600.                                         var touch = event.changedTouches[0];
  601.                                         if(!PressBtn){
  602.                                                 st_x = Graphics.pageToCanvasX(touch.pageX);
  603.                                                 st_y = Graphics.pageToCanvasY(touch.pageY);
  604.                                                 if(st_x<0 || st_y<0 || st_x>Graphics.boxWidth || st_y>Graphics.boxHeight){
  605.                                                         if(PRM.outcansel){Input._currentState['escape']=true;setTimeout("TouchInput._endRequest('escape');", 100);}
  606.                                                         if(PRM.outaction){Input._currentState['ok']=true;setTimeout("TouchInput._endRequest('ok');", 100);}
  607.                                                 }
  608.                                         }
  609.                                 };
  610.                         }else{
  611.                                 var TouchInput_onLeftButtonDown = TouchInput._onLeftButtonDown;
  612.                                 TouchInput._onLeftButtonDown = function(event) {
  613.                                         TouchInput_onLeftButtonDown.apply(this, arguments);
  614.                                         if(!PressBtn){
  615.                                                 st_x = Graphics.pageToCanvasX(event.pageX);
  616.                                                 st_y = Graphics.pageToCanvasY(event.pageY);
  617.                                                 if(st_x<0 || st_y<0 || st_x>Graphics.boxWidth || st_y>Graphics.boxHeight){
  618.                                                         if(PRM.outcansel){Input._currentState['escape']=true;setTimeout("TouchInput._endRequest('escape');", 100);}
  619.                                                         if(PRM.outaction){Input._currentState['ok']=true;setTimeout("TouchInput._endRequest('ok');", 100);}
  620.                                                 }
  621.                                         }
  622.                                 };
  623.                         }
  624.                 }
  625.  
  626.                 if(PRM.flickpage){
  627.                         var TouchInput_onMove = TouchInput._onMove;
  628.                         TouchInput._onMove = function(x, y) {
  629.                                 TouchInput_onMove.apply(this, arguments);
  630.                                 if(!PressBtn){
  631.                                         if((st_x-x)<-50 && Math.abs(st_y-y)<100){st_y=9999;Input._currentState['pageup']=true;setTimeout("TouchInput._endRequest('pageup');", 100);}
  632.                                         if((st_x-x)>50 && Math.abs(st_y-y)<100){st_y=9999;Input._currentState['pagedown']=true;setTimeout("TouchInput._endRequest('pagedown');", 100);}
  633.                                 }
  634.                         }
  635.                 }
  636.         }
  637.  
  638.         //AnalogMove.js
  639.         if(PRM.analogmove && Utils.isMobileDevice() || PRM.analogmove && PRM.pcBtn){
  640.                 Input.leftStick = function() {
  641.                         var threshold = 0.1;
  642.                         var x = touchx;
  643.                         var y = touchy;
  644.                         var tilt = Math.min(1,Math.sqrt(touchx*touchx+touchy*touchy)*PRM.sensitivity);
  645.                         var direction = 0.0;
  646.                         if (x === 0.0) {
  647.                                 direction = (-y > 0 ? Math.PI * 0.0 : Math.PI * 1.0);
  648.                         } else if (y === 0.0) {
  649.                                 direction = (-x > 0 ? Math.PI * 0.5 : Math.PI * 1.5);
  650.                         } else {
  651.                                 direction = Math.atan2(-x, -y);
  652.                         }
  653.                         return {tilt: tilt, direction: direction};
  654.                 };
  655.         }
  656. })(UCHU_MobileOperation);
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2025-1-13 14:15

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表