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

Project1

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

[有事请教] 如何把在战斗中使用道具做成一个技能?

[复制链接]

Lv2.观梦者

梦石
0
星屑
938
在线时间
109 小时
注册时间
2013-2-16
帖子
18
跳转到指定楼层
1
发表于 2020-7-27 21:02:55 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
想做一个在战斗中使用的“使用道具”的技能,使用后直接调出战斗中的道具选择界面

因为删掉战斗前两级菜单的时候就把原来的道具按钮也删掉了,道具使用就只能依靠技能来实现
但是普通地来做貌似做不到,得依靠事件脚本或插件。
而且不知道事件的插入脚本是什么原理,写上Scene_Battle里的函数会报错……

虽然考虑过技能消耗道具的插件,但也只能一个个技能绑定道具而且会大量占用技能栏巴拉巴拉……

请教:
1、大佬们有没有能够直接实现功能(设置一个“使用道具”的技能)的纯事件的奇技淫巧?
2、有没有插件能实现功能或能够直接代替使用道具的按钮(比如外置一个道具按钮)?

Lv2.观梦者

梦石
0
星屑
342
在线时间
72 小时
注册时间
2020-1-22
帖子
31
2
发表于 2020-7-29 20:45:40 | 只看该作者
感觉有点像是八方旅人里面的效果。
推荐一下这个插件,图片公共事件,据说能在战斗中使用公共事件(我没有应用过这方面的功能,也许可以用这个重新做一个战斗系统?),不过这个也只能一个一个事件去做……

  1. //=============================================================================
  2. // PictureCallCommon.js
  3. // ----------------------------------------------------------------------------
  4. // (C)2015 Triacontane
  5. // This plugin is released under the MIT License.
  6. // http://opensource.org/licenses/mit-license.php
  7. // ----------------------------------------------------------------------------
  8. //版本
  9. // 1.14.2 2020/06/05 在帮助的按键绑定中添加pagedown和pageup
  10. // 1.14.1 2020/05/16 修改了帮助命令中部分容易混淆的描述
  11. // 1.14.0 2020/05/13 添加了只有在指定的开关为ON时才能使“触摸操作抑制”有效的设定
  12. // 1.13.1 2020/05/06 修正执行地图变焦时坐标获取计算错误的问题
  13. // 1.13.0 2019/12/22添加了设置以执行常见的并行处理图片。
  14. // 1.12.2 2019/03/31更改了当通过键绑定指定附加键时按钮名称不是小写字母时不响应的规范
  15. // 1.12.1 2019/03/19修复了从社区版本核心脚本1.3或更高版本共有的图片设置移动路径时发生错误的问题
  16. // 1.12.0 2018/11/02添加了禁用所有图片触摸的开关
  17. // 1.11.0 2018/08/10解决了透明度设置未正确应用于Napatana函数的问题
  18. // 添加了将透明度设置从插件命令更改为pattens函数的功能
  19. // 1.10.8 2018/06/16解决了无法正常获取某些布尔类型参数的问题
  20. // 1.10.7 2018/06/01修复了在“过程战斗”事件中无法使用“在战斗中始终运行”功能的问题
  21. // 1.10.6 2018/04/12修改了帮助说明
  22. // 1.10.5 2017/12/17将执行常见事件的按钮的规范更改为在事件执行期间无效
  23. // 1.10.4 2017/11/01更改为在调用通用图片时未显示目标图片时不调用事件的规范
  24. // 1.10.3 2017/10/28解决了以下问题:如果您在等待图片触摸事件调用的同时进入战斗,则会在显示战斗屏幕后执行该战斗
  25. // 1.10.2 2017/10/21修复了进入战斗屏幕时鼠标悬停事件可能意外发生的问题
  26. // 1.10.1 2017/05/27动态字符图片插件的窗口字符串单击现在支持图片单击
  27. // 1.9.3 2017/05/27重构描述(将属性添加到Object类)(可能会引起衝突)
  28. // 1.9.2 2017/03/16修复了1.9.0战斗中常见事件执行无法正常运行的问题
  29. // 1.9.1 2017/03/16更改了规格,以使不透明度为0的图片在考虑透明颜色时完全不响应
  30. // 1.9.0 2017/03/13添加了在战斗中执行图片点击事件的功能
  31. // 1.8.2 2017/02/14修正了在单击图片时将值存储在变量中的功能,但由于1.8.0的修正而无效
  32. // 1.8.1 2017/02/07删除了与终端有关的描述
  33. // 1.8.0 2017/02/03添加了将图片点击绑定到任何按钮的功能
  34. // 1.7.0 2017/02/02现在,您可以在缩放和摇动地图时准确单击图片。
  35. // 添加了一个函数,该函数允许脚本确定鼠标指针是否在图片内。
  36. // 1.6.0 2016/12/29规格修改,当图片点击发生事件时使地图触摸无效
  37. // 1.5.1 2016/11/20删除了混合在1.5.0中的不必要代码
  38. // 1.5.0 2016/11/19添加了单击图片时打开开关的功能,而不是常见事件
  39. // 1.4.0 2016/08/20添加了用于设置是否为每张图片考虑透明色的功能
  40. // 修复了在不使用插件的情况下加载保存数据时的错误
  41. // 1.3.5 2016/04/20已还原图片优先级已通过重构反转
  42. // 1.3.4 2016/04/08解决了图片相邻时鼠标悬停和鼠标悬停可能无法正常工作的问题。
  43. // 1.3.3 2016/03/19添加了一个参数,用于在满足触发条件时抑制后续的触摸处理
  44. // 1.3.2 2016/02/28稍微减轻处理负担
  45. // 1.3.1 2016/02/21将鼠标移动添加到触发器
  46. // 1.3.0 2016/01/24添加了拍拍照片的功能
  47. // 添加鼠标移动以触发
  48. // 固定图片旋转时的正确位置
  49. // 1.2.1 2016/01/21固定了将常见事件的上限从100调至1000(DB的最大值)
  50. // 竞争性措施(YEP_MessageCore.js)
  51. // 1.2.0 2016/01/14滚轮触发器,双击和更多触发器被扩展为10种类型
  52. // 1.1.3 2016/01/02衝突度量(TDDP_BindPicturesToMap.js)
  53. // 1.1.2 2015/12/20更改规格以在发生长按事件时设置1秒间隔
  54. // 1.1.1 2015/12/10纠正了删除图片后将鼠标悬停在鼠标上的错误
  55. // 1.1.0 2015/11/23添加了用于指定调用公共事件的目标的图片编号的功能
  56. // 添加了在设置中考虑透明颜色的功能
  57. // 添加“右键”或“长按”作为触发器
  58. // 1.0.0 2015/11/14第一版
  59. // ----------------------------------------------------------------------------
  60. // [Blog]   : https://triacontane.blogspot.jp/
  61. // [Twitter]: https://twitter.com/triacontane/
  62. // [GitHub] : https://github.com/triacontane/
  63. //=============================================================================
  64. /*:
  65. * @plugindesc 图片点击公共事件
  66. * @author triacontane
  67. *
  68. * @param TransparentConsideration
  69. * @desc 如果单击位置是透明的,则禁用单击。
  70. * @default true
  71. * @type boolean
  72. *
  73. * @param GameVariablePictureNum
  74. * @desc 在调用公共事件时存储图片号的游戏变量号。
  75. * @default 0
  76. * @type variable
  77. *
  78. * @param GameVariableTouchX
  79. * @desc 存储触碰x位置的游戏变量号
  80. * @default 0
  81. * @type variable
  82. *
  83. * @param GameVariableTouchY
  84. * @desc 存储触碰y位置的游戏变量号
  85. * @default 0
  86. * @type variable
  87. *
  88. * @param SuppressTouch
  89. * @desc 禁止他人触摸事件(ON/OFF)
  90. * @default false
  91. * @type boolean
  92. *
  93. * @param SuppressTouchSwitch
  94. * @desc 如果指定了此选项,“触控”仅在目标开关打开时启用。
  95. * @default 0
  96. * @type switch
  97. *
  98. * @param AlwaysCommonInBattle
  99. * @desc 总是在战斗中执行公共事件(ON/OFF)
  100. * @default false
  101. * @type boolean
  102. *
  103. * @param AsParallelCommon
  104. * @desc 以并行处理方式执行通过点击图片执行的公共事件。
  105. * @default false
  106. * @type boolean
  107. *
  108. * @param InvalidSwitchId
  109. * @desc 指定编号的开关为ON时,所有画面触摸都无效。
  110. * @default 0
  111. * @type switch
  112. *
  113. * @help
  114.   * 点击图片后,指定的公共事件
  115. * 提供调用或打开任意开关的插件命令。
  116. * 如果使用该插件,即使不知道JavaScript
  117. * 谁都可以简单地制作以点击和触摸为主体的游戏。
  118. *
  119. * 虽然在战斗中也可以实行,但只有在限定的时间内才能使用
  120. * 事件不执行。参数“战斗中经常运行公共端”生效后
  121. * 总是执行事件,
  122. * 部分事件命令有不正确动作的限制。
  123. *
  124. * 注意!
  125. * 一旦关联图片和共模事件删除图片也有效。
  126. * 如果图片不存在,点击哪里都不会有反应,
  127. * 再次以相同编号显示图片时会发生反应。
  128. *
  129. * 插件命令详情
  130. * 从事件命令“插件命令”执行。
  131. * (参数之间用半角空间隔开)
  132. *
  133. * 图片按钮化或
  134. * P_CALL_CE [图片编号] [公共事件 ID] [触发] [透明度考虑]:
  135. * (透明度考虑需要的是一个布尔类型,输入ON或者OFF)
  136. *     单击图片时,调用公共事件id。
  137. *    触发器如下所示(如果省略,则将其指定为1)
  138. *      1  : 左键点击
  139. *      2  : 右键点击
  140. *      3  : 长按
  141. *      4  : 悬停
  142. *      5  : 移出
  143. *      6  : 鼠标释放
  144. *      7  : 重复点击鼠标
  145. *      8  : 鼠标点击
  146. *      9  : 滑轮点击
  147. *      10 : 双击
  148. *      11 : 移动鼠标
  149. *      12 : 鼠标移动并按下
  150. *
  151. * 如果指定了考虑透明色的参数(ON/OFF),则会考虑每个图片的透明色
  152. * 可以设置。如果不进行任何设置,将应用插件参数设置。(以往的规格)
  153. *
  154. *  例:P_CALL_CE 1 3 7 ON
  155. *   :ピクチャのボタン化 \v[1] \v[2] \v[3] OFF
  156. *
  157. *  图片切换或
  158. *  P_CALL_SWITCH [图片编号][开关ID][触发][考虑透明色]
  159. *  在图片区域内满足触发条件时,将任意开关设为ON。
  160. *  触发设置等与图片按钮化相同。
  161. *
  162. * 图片按键绑定或
  163. * P_CALL_KEY_BIND [图片编号][按钮名称][触发][考虑透明色]
  164. * 在图片区域内满足触发条件时,按下任意按钮。
  165. * 按钮名称的设定如下所示。(Windows标准)
  166. *  ok       : Enter,Z
  167. *  shift    : Shift
  168. *  control  : Ctrl,Alt
  169. *  escape   : Esc,X
  170. *  left     : ←
  171. *  up       : ↑
  172. *  right    : →
  173. *  down     : ↓
  174. *  pageup   : PageUp
  175. *  pagedown : PageDown
  176. *
  177. *  删除图片按钮 or
  178. *  P_CALL_CE_REMOVE [图片编号]
  179. *      解除图片和公共事件或开关的关联。
  180. *      所有触发器均为删除对象。
  181. *
  182. *  例:P_CALL_CE_REMOVE 1
  183. *   :ピクチャのボタン化解除 \v[1]
  184. *
  185. *  以图片的方式设置 or
  186. *  P_STROKE [图片编号] [变量编号] [是否考虑透明色]
  187. *     如果在指定的图片上移动鼠标或触摸,
  188. *     根据速度值将数值与指定变量相加。
  189. *     此设置也可用于替换图片或暂时隐藏图片。
  190. *     10秒大约能积累到1000左右。
  191. *
  192. *  例:P_STROKE 1 2 ON
  193. *   :ピクチャのなでなで設定 \v[1] \v[2] OFF
  194. *
  195. *  通过图片的触碰解除 or
  196. *  P_STROKE_REMOVE [图片编号]
  197. *    通过触碰指定图片来取消设置。
  198. *
  199. *  例:P_STROKE_REMOVE 1
  200. *   :ピクチャのなでなで解除 \v[1]
  201. *
  202. *  图片指针化 or
  203. *  P_POINTER [图片编号]
  204. *    指定的图片会自动追踪触摸坐标。
  205. *    没有触摸的话会自动隐藏。
  206. *
  207. *  例:P_POINTER 1
  208. *   :ピクチャのポインタ化 \v[1]
  209. *
  210. *  图片指针化解除 or
  211. *  P_POINTER_REMOVE [图片编号]
  212. *    取消指定图片的指针化。
  213. *
  214. *  例:P_POINTER_REMOVE 1
  215. *   :ピクチャのポインタ化解除 \v[1]
  216. *
  217. *  ・脚本(面向上级)
  218. *  $gameScreen.isPointerInnerPicture([ID]);
  219. *  在指定的[ID]图片中存在鼠标指针或触摸坐标时
  220. *  返回true。此脚本即使没有使用[P_CALL_CE]也有效。
  221. *
  222. *  例:$gameScreen.isPointerInnerPicture(5);
  223. *
  224. * P_CALL_CE[图片编号][公共事件ID][触发器][透明机密]:
  225. * 单击图片时,分配公共事件id。
  226. * 触发器如下(如果省略,则指定为1)
  227. * 1:左键单击
  228. * 2:右键单击
  229. * 3:长按
  230. * 4:鼠标悬停
  231. * 5:鼠标移出
  232. * 6:鼠标释放
  233. * 7:鼠标重复单击
  234. * 8:鼠标按下
  235. * 9:滑轮点击
  236. * 10:双击
  237. * 11:鼠标移动
  238. * 12:鼠标移动并按下
  239. * P_CALL_CE_REMOVE[图片编号]:
  240. * 打破从画面到普通事件的关系。
  241. * -脚本
  242. * $gameScreen.isPointerInnerPicture([ID]);
  243. * 如果鼠标指针在图片内部,则返回true。
  244. * 例如:$gameScreen.isPointerInnerPicture(5) ;
  245. * 这个插件是在麻省理工学院许可下发布的。
  246. *
  247. * 使用规约:
  248. * 可擅自更改作者,再次发布,使用形式(商务、18禁使用等)
  249. * 对此也没有限制。
  250. * 此插件已属于您。
  251. */
  252. (function() {
  253.     'use strict';
  254.     var pluginName = 'PictureCallCommon';

  255.     var getParamOther = function(paramNames) {
  256.         if (!Array.isArray(paramNames)) paramNames = [paramNames];
  257.         for (var i = 0; i < paramNames.length; i++) {
  258.             var name = PluginManager.parameters(pluginName)[paramNames[i]];
  259.             if (name) return name;
  260.         }
  261.         return null;
  262.     };

  263.     var getParamBoolean = function(paramNames) {
  264.         var value = getParamOther(paramNames);
  265.         return (value || '').toUpperCase() === 'ON' || (value || '').toUpperCase() === 'TRUE';
  266.     };

  267.     var getParamNumber = function(paramNames, min, max) {
  268.         var value = getParamOther(paramNames);
  269.         if (arguments.length < 2) min = -Infinity;
  270.         if (arguments.length < 3) max = Infinity;
  271.         return (parseInt(value, 10) || 0).clamp(min, max);
  272.     };

  273.     var getCommandName = function(command) {
  274.         return (command || '').toUpperCase();
  275.     };

  276.     var getArgNumber = function(arg, min, max) {
  277.         if (arguments.length < 2) min = -Infinity;
  278.         if (arguments.length < 3) max = Infinity;
  279.         return (parseInt(convertEscapeCharacters(arg), 10) || 0).clamp(min, max);
  280.     };

  281.     var getArgBoolean = function(arg) {
  282.         return (arg || '').toUpperCase() === 'ON';
  283.     };

  284.     var convertEscapeCharacters = function(text) {
  285.         if (text == null) text = '';
  286.         var window = SceneManager._scene._windowLayer.children[0];
  287.         return window ? window.convertEscapeCharacters(text) : text;
  288.     };

  289.     var iterate = function(that, handler) {
  290.         Object.keys(that).forEach(function(key, index) {
  291.             handler.call(that, key, that[key], index);
  292.         });
  293.     };

  294.     //=============================================================================
  295.     // パラメータの取得とバリデーション
  296.     //=============================================================================
  297.     var paramGameVariableTouchX       = getParamNumber(['GameVariableTouchX', 'ポインタX座標の変数番号'], 0);
  298.     var paramGameVariableTouchY       = getParamNumber(['GameVariableTouchY', 'ポインタY座標の変数番号'], 0);
  299.     var paramGameVariablePictNum      = getParamNumber(['GameVariablePictureNum', 'ピクチャ番号の変数番号'], 0);
  300.     var paramTransparentConsideration = getParamBoolean(['TransparentConsideration', '透明色を考慮']);
  301.     var paramSuppressTouch            = getParamBoolean(['SuppressTouch', 'タッチ操作抑制']);
  302.     var paramSuppressTouchSwitch      = getParamNumber(['SuppressTouchSwitch', 'タッチ操作抑制スイッチ']);
  303.     var paramAlwaysCommonInBattle     = getParamBoolean(['AlwaysCommonInBattle', '戦闘中常にコモン実行']);
  304.     var paramInvalidSwitchId          = getParamNumber(['InvalidSwitchId', '無効スイッチ'], 0);
  305.     var paramAsParallelCommon         = getParamBoolean(['AsParallelCommon', '並列処理として実行']);

  306.     //=============================================================================
  307.     // Game_Interpreter
  308.     //  プラグインコマンド[P_CALL_CE]などを追加定義します。
  309.     //=============================================================================
  310.     var _Game_Interpreter_pluginCommand      = Game_Interpreter.prototype.pluginCommand;
  311.     Game_Interpreter.prototype.pluginCommand = function(command, args) {
  312.         _Game_Interpreter_pluginCommand.apply(this, arguments);
  313.         var pictureId, touchParam, trigger, variableNum, transparent;
  314.         switch (getCommandName(command)) {
  315.             case 'P_CALL_CE' :
  316.             case 'ピクチャのボタン化':
  317.                 pictureId   = getArgNumber(args[0], 1, $gameScreen.maxPictures());
  318.                 touchParam  = getArgNumber(args[1], 1, $dataCommonEvents.length - 1);
  319.                 trigger     = getArgNumber(args[2], 1);
  320.                 transparent = (args.length > 3 ? getArgBoolean(args[3]) : null);
  321.                 $gameScreen.setPictureCallCommon(pictureId, touchParam, trigger, transparent);
  322.                 break;
  323.             case 'P_CALL_SWITCH' :
  324.             case 'ピクチャのスイッチ化':
  325.                 pictureId   = getArgNumber(args[0], 1, $gameScreen.maxPictures());
  326.                 touchParam  = getArgNumber(args[1], 1);
  327.                 trigger     = getArgNumber(args[2], 1);
  328.                 transparent = (args.length > 3 ? getArgBoolean(args[3]) : null);
  329.                 $gameScreen.setPictureCallCommon(pictureId, touchParam * -1, trigger, transparent);
  330.                 break;
  331.             case 'P_CALL_KEY_BIND' :
  332.             case 'ピクチャのキーバインド':
  333.                 pictureId   = getArgNumber(args[0], 1, $gameScreen.maxPictures());
  334.                 touchParam  = convertEscapeCharacters(args[1]);
  335.                 trigger     = getArgNumber(args[2], 1);
  336.                 transparent = (args.length > 3 ? getArgBoolean(args[3]) : null);
  337.                 $gameScreen.setPictureCallCommon(pictureId, touchParam, trigger, transparent);
  338.                 break;
  339.             case 'P_CALL_CE_REMOVE' :
  340.             case 'ピクチャのボタン化解除':
  341.                 pictureId = getArgNumber(args[0], 1, $gameScreen.maxPictures());
  342.                 $gameScreen.setPictureRemoveCommon(pictureId);
  343.                 break;
  344.             case 'P_STROKE' :
  345.             case 'ピクチャのなでなで設定':
  346.                 pictureId   = getArgNumber(args[0], 1, $gameScreen.maxPictures());
  347.                 variableNum = getArgNumber(args[1], 1, $dataSystem.variables.length - 1);
  348.                 transparent = (args.length > 2 ? getArgBoolean(args[2]) : null);
  349.                 $gameScreen.setPictureStroke(pictureId, variableNum, transparent);
  350.                 break;
  351.             case 'P_STROKE_REMOVE' :
  352.             case 'ピクチャのなでなで解除':
  353.                 pictureId = getArgNumber(args[0], 1, $gameScreen.maxPictures());
  354.                 $gameScreen.removePictureStroke(pictureId);
  355.                 break;
  356.             case 'P_POINTER' :
  357.             case 'ピクチャのポインタ化':
  358.                 pictureId = getArgNumber(args[0], 1, $gameScreen.maxPictures());
  359.                 $gameScreen.setPicturePointer(pictureId);
  360.                 break;
  361.             case 'P_POINTER_REMOVE' :
  362.             case 'ピクチャのポインタ化解除':
  363.                 pictureId = getArgNumber(args[0], 1, $gameScreen.maxPictures());
  364.                 $gameScreen.removePicturePointer(pictureId);
  365.                 break;
  366.         }
  367.     };

  368.     var _Game_Interpreter_terminate      = Game_Interpreter.prototype.terminate;
  369.     Game_Interpreter.prototype.terminate = function() {
  370.         _Game_Interpreter_terminate.apply(this, arguments);
  371.         this._setupFromPicture = false;
  372.     };

  373.     Game_Interpreter.prototype.setupFromPicture = function(eventList, commonId) {
  374.         this.setup(eventList, null);
  375.         if (this.setEventInfo) {
  376.             this.setEventInfo({ eventType: 'common_event', commonEventId: commonId });
  377.         }
  378.         this._setupFromPicture = true;
  379.     };

  380.     Game_Interpreter.prototype.isSetupFromPicture = function() {
  381.         return this._setupFromPicture;
  382.     };

  383.     //=============================================================================
  384.     // Game_Temp
  385.     //  呼び出し予定のコモンイベントIDのフィールドを追加定義します。
  386.     //=============================================================================
  387.     var _Game_Temp_initialize      = Game_Temp.prototype.initialize;
  388.     Game_Temp.prototype.initialize = function() {
  389.         _Game_Temp_initialize.call(this);
  390.         this.clearPictureCallInfo();
  391.     };

  392.     Game_Temp.prototype.clearPictureCallInfo = function() {
  393.         this._pictureCommonId = 0;
  394.         this._touchPictureId  = 0;
  395.     };

  396.     Game_Temp.prototype.setPictureCallInfo = function(pictureCommonId) {
  397.         this._pictureCommonId = pictureCommonId;
  398.     };

  399.     Game_Temp.prototype.pictureCommonId = function() {
  400.         if (!$gameScreen.picture(this._touchPictureId)) {
  401.             this.clearPictureCallInfo();
  402.         }
  403.         return this._pictureCommonId;
  404.     };

  405.     Game_Temp.prototype.onTouchPicture = function(param, pictureId) {
  406.         this._touchPictureParam = param;
  407.         if (this.isTouchPictureSetSwitch()) {
  408.             $gameSwitches.setValue(param * -1, true);
  409.         }
  410.         if (this.isTouchPictureCallCommon()) {
  411.             if (!paramAsParallelCommon && $gameMap.isEventRunning() && !$gameParty.inBattle()) {
  412.                 this._touchPictureParam = null;
  413.                 return;
  414.             }
  415.             this.setPictureCallInfo(param);
  416.         }
  417.         if (this.isTouchPictureButtonTrigger()) {
  418.             Input.bindKeyState(param);
  419.         }
  420.         if (paramGameVariablePictNum > 0) {
  421.             $gameVariables.setValue(paramGameVariablePictNum, pictureId);
  422.         }
  423.         this._touchPictureId = pictureId;
  424.     };

  425.     Game_Temp.prototype.isTouchPictureButtonTrigger = function() {
  426.         return isNaN(this._touchPictureParam);
  427.     };

  428.     Game_Temp.prototype.isTouchPictureSetSwitch = function() {
  429.         return !isNaN(this._touchPictureParam) && this._touchPictureParam < 0;
  430.     };

  431.     Game_Temp.prototype.isTouchPictureCallCommon = function() {
  432.         return !isNaN(this._touchPictureParam) && this._touchPictureParam > 0;
  433.     };

  434.     //=============================================================================
  435.     // Game_System
  436.     //  ロード時にピクチャ関連メンバを初期化します。
  437.     //=============================================================================
  438.     var _Game_System_onAfterLoad      = Game_System.prototype.onAfterLoad;
  439.     Game_System.prototype.onAfterLoad = function() {
  440.         _Game_System_onAfterLoad.apply(this, arguments);
  441.         $gameScreen.initPictureArray();
  442.     };

  443.     //=============================================================================
  444.     // Game_Map
  445.     //  ピクチャがタッチされたときのコモンイベント呼び出し処理を追加定義します。
  446.     //=============================================================================
  447.     var _Game_Map_setupStartingEvent      = Game_Map.prototype.setupStartingEvent;
  448.     Game_Map.prototype.setupStartingEvent = function() {
  449.         var result = _Game_Map_setupStartingEvent.call(this);
  450.         return result || this.setupPictureCommonEvent();
  451.     };

  452.     var _Game_Map_updateInterpreter = Game_Map.prototype.updateInterpreter;
  453.     Game_Map.prototype.updateInterpreter = function() {
  454.         _Game_Map_updateInterpreter.apply(this, arguments);
  455.         this.setupPictureParallelCommonEvent();
  456.     };

  457.     Game_Map.prototype.setupPictureParallelCommonEvent = function() {
  458.         if (!paramAsParallelCommon) {
  459.             return;
  460.         }
  461.         var commonId = $gameTemp.pictureCommonId();
  462.         var event    = $dataCommonEvents[commonId];
  463.         if (event) {
  464.             if (!this._pictureCommonEvents) {
  465.                 this._pictureCommonEvents = [];
  466.             }
  467.             var interpreter = new Game_Interpreter();
  468.             interpreter.setupFromPicture(event.list, commonId);
  469.             this._pictureCommonEvents.push(interpreter);
  470.             $gameTemp.clearPictureCallInfo();
  471.         }
  472.     };

  473.     Game_Map.prototype.setupPictureCommonEvent = function() {
  474.         if (paramAsParallelCommon) {
  475.             return false;
  476.         }
  477.         var commonId = $gameTemp.pictureCommonId();
  478.         var event    = $dataCommonEvents[commonId];
  479.         var result   = false;
  480.         if (!this.isEventRunning() && event) {
  481.             this._interpreter.setupFromPicture(event.list, commonId);
  482.             result = true;
  483.         }
  484.         $gameTemp.clearPictureCallInfo();
  485.         return result;
  486.     };

  487.     var _Game_Map_updateEvents = Game_Map.prototype.updateEvents;
  488.     Game_Map.prototype.updateEvents = function() {
  489.         _Game_Map_updateEvents.apply(this, arguments);
  490.         if (this._pictureCommonEvents && this._pictureCommonEvents.length > 0) {
  491.             this.updatePictureCommonEvents();
  492.         }
  493.     };

  494.     Game_Map.prototype.updatePictureCommonEvents = function() {
  495.         this._pictureCommonEvents.forEach(function(event) {
  496.             event.update();
  497.         });
  498.         this._pictureCommonEvents = this._pictureCommonEvents.filter(function(event) {
  499.             return event.isRunning();
  500.         })
  501.     };

  502.     //=============================================================================
  503.     // Game_Troop
  504.     //  ピクチャがタッチされたときのコモンイベント呼び出し処理を追加定義します。
  505.     //=============================================================================
  506.     Game_Troop.prototype.setupPictureCommonEvent = Game_Map.prototype.setupPictureCommonEvent;

  507.     Game_Troop.prototype.isExistPictureCommon = function() {
  508.         return this._interpreter.isSetupFromPicture();
  509.     };

  510.     //=============================================================================
  511.     // Game_Screen
  512.     //  ピクチャに対応するコモンイベント呼び出し用のID配列を追加定義します。
  513.     //=============================================================================
  514.     var _Game_Screen_initialize      = Game_Screen.prototype.initialize;
  515.     Game_Screen.prototype.initialize = function() {
  516.         _Game_Screen_initialize.apply(this, arguments);
  517.         this.initPictureArray();
  518.     };

  519.     Game_Screen.prototype.initPictureArray = function() {
  520.         this._pictureCidArray         = this._pictureCidArray || [];
  521.         this._pictureSidArray         = this._pictureSidArray || [];
  522.         this._picturePidArray         = this._picturePidArray || [];
  523.         this._pictureTransparentArray = this._pictureTransparentArray || [];
  524.     };

  525.     var _Game_Screen_update      = Game_Screen.prototype.update;
  526.     Game_Screen.prototype.update = function() {
  527.         _Game_Screen_update.apply(this, arguments);
  528.         this.updatePointer();
  529.     };

  530.     Game_Screen.prototype.updatePointer = function() {
  531.         if (paramGameVariableTouchX)
  532.             $gameVariables._data[paramGameVariableTouchX] = TouchInput.x;
  533.         if (paramGameVariableTouchY)
  534.             $gameVariables._data[paramGameVariableTouchY] = TouchInput.y;
  535.     };

  536.     Game_Screen.prototype.setPictureCallCommon = function(pictureId, touchParameter, trigger, transparent) {
  537.         var realPictureId = this.realPictureId(pictureId);
  538.         if (this._pictureCidArray[realPictureId] == null) this._pictureCidArray[realPictureId] = [];
  539.         this._pictureCidArray[realPictureId][trigger] = touchParameter;
  540.         this._pictureTransparentArray[realPictureId]  = transparent;
  541.     };

  542.     Game_Screen.prototype.setPictureRemoveCommon = function(pictureId) {
  543.         this._pictureCidArray[this.realPictureId(pictureId)] = [];
  544.     };

  545.     Game_Screen.prototype.setPictureStroke = function(pictureId, variableNum, transparent) {
  546.         var realPictureId = this.realPictureId(pictureId);
  547.         this._pictureSidArray[realPictureId] = variableNum;
  548.         this._pictureTransparentArray[realPictureId] = transparent;
  549.     };

  550.     Game_Screen.prototype.removePictureStroke = function(pictureId) {
  551.         this._pictureSidArray[this.realPictureId(pictureId)] = null;
  552.     };

  553.     Game_Screen.prototype.setPicturePointer = function(pictureId) {
  554.         this._picturePidArray[this.realPictureId(pictureId)] = true;
  555.     };

  556.     Game_Screen.prototype.removePicturePointer = function(pictureId) {
  557.         this._picturePidArray[this.realPictureId(pictureId)] = null;
  558.     };

  559.     Game_Screen.prototype.getPictureCid = function(pictureId) {
  560.         return this._pictureCidArray[this.realPictureId(pictureId)];
  561.     };

  562.     Game_Screen.prototype.getPictureSid = function(pictureId) {
  563.         return this._pictureSidArray[this.realPictureId(pictureId)];
  564.     };

  565.     Game_Screen.prototype.getPicturePid = function(pictureId) {
  566.         return this._picturePidArray[this.realPictureId(pictureId)];
  567.     };

  568.     Game_Screen.prototype.getPictureTransparent = function(pictureId) {
  569.         return this._pictureTransparentArray[this.realPictureId(pictureId)];
  570.     };

  571.     Game_Screen.prototype.disConvertPositionX = function(x) {
  572.         var unshiftX = x - this.zoomX() * (1 - this.zoomScale());
  573.         return Math.round(unshiftX / this.zoomScale());
  574.     };

  575.     Game_Screen.prototype.disConvertPositionY = function(y) {
  576.         var unshiftY = y - this.zoomY() * (1 - this.zoomScale());
  577.         return Math.round(unshiftY / this.zoomScale());
  578.     };

  579.     Game_Screen.prototype.isPointerInnerPicture = function(pictureId) {
  580.         var picture = SceneManager.getPictureSprite(pictureId);
  581.         return picture ? picture.isIncludePointer() : false;
  582.     };

  583.     //=============================================================================
  584.     // SceneManager
  585.     //  ピクチャスプライトを取得します。
  586.     //=============================================================================
  587.     SceneManager.getPictureSprite = function(pictureId) {
  588.         return this._scene.getPictureSprite(pictureId);
  589.     };

  590.     //=============================================================================
  591.     // BattleManager
  592.     //  ピクチャコモンを常に実行できるようにします。
  593.     //=============================================================================
  594.     BattleManager.updatePictureCommon = function() {
  595.         if ($gameTroop.isExistPictureCommon() && paramAlwaysCommonInBattle) {
  596.             this.updateEventMain();
  597.             return true;
  598.         }
  599.         return false;
  600.     };

  601.     //=============================================================================
  602.     // Scene_Base
  603.     //  ピクチャに対する繰り返し処理を追加定義します。
  604.     //=============================================================================
  605.     Scene_Base.prototype.updateTouchPictures = function() {
  606.         if (paramInvalidSwitchId && $gameSwitches.value(paramInvalidSwitchId)) {
  607.             return;
  608.         }
  609.         this._spriteset.iteratePictures(function(picture) {
  610.             if (typeof picture.callTouch === 'function') picture.callTouch();
  611.             return $gameTemp.pictureCommonId() === 0;
  612.         });
  613.     };

  614.     Scene_Base.prototype.getPictureSprite = function(pictureId) {
  615.         var result = null;
  616.         this._spriteset.iteratePictures(function(picture) {
  617.             if (picture.isIdEquals(pictureId)) {
  618.                 result = picture;
  619.                 return false;
  620.             }
  621.             return true;
  622.         });
  623.         return result;
  624.     };

  625.     //=============================================================================
  626.     // Scene_Map
  627.     //  ピクチャのタッチ状態からのコモンイベント呼び出し予約を追加定義します。
  628.     //=============================================================================
  629.     var _Scene_Map_update      = Scene_Map.prototype.update;
  630.     Scene_Map.prototype.update = function() {
  631.         this.updateTouchPictures();
  632.         _Scene_Map_update.apply(this, arguments);
  633.     };

  634.     var _Scene_Map_processMapTouch      = Scene_Map.prototype.processMapTouch;
  635.     Scene_Map.prototype.processMapTouch = function() {
  636.         _Scene_Map_processMapTouch.apply(this, arguments);
  637.         if ($gameTemp.isDestinationValid() && $gameTemp.pictureCommonId() > 0) {
  638.             $gameTemp.clearDestination();
  639.         }
  640.     };

  641.     var _Scene_Map_terminate      = Scene_Map.prototype.terminate;
  642.     Scene_Map.prototype.terminate = function() {
  643.         _Scene_Map_terminate.apply(this, arguments);
  644.         $gameTemp.clearPictureCallInfo();
  645.     };

  646.     //=============================================================================
  647.     // Scene_Battle
  648.     //  ピクチャのタッチ状態からのコモンイベント呼び出し予約を追加定義します。
  649.     //=============================================================================
  650.     var _Scene_Battle_update      = Scene_Battle.prototype.update;
  651.     Scene_Battle.prototype.update = function() {
  652.         this.updateTouchPictures();
  653.         $gameTroop.setupPictureCommonEvent();
  654.         _Scene_Battle_update.apply(this, arguments);
  655.     };

  656.     var _Scene_Battle_updateBattleProcess      = Scene_Battle.prototype.updateBattleProcess;
  657.     Scene_Battle.prototype.updateBattleProcess = function() {
  658.         var result = BattleManager.updatePictureCommon();
  659.         if (result) return;
  660.         _Scene_Battle_updateBattleProcess.apply(this, arguments);
  661.     };

  662.     var _Scene_Battle_terminate      = Scene_Battle.prototype.terminate;
  663.     Scene_Battle.prototype.terminate = function() {
  664.         _Scene_Battle_terminate.apply(this, arguments);
  665.         $gameTemp.clearPictureCallInfo();
  666.     };

  667.     //=============================================================================
  668.     // Spriteset_Base
  669.     //  ピクチャに対するイテレータを追加定義します。
  670.     //=============================================================================
  671.     Spriteset_Base.prototype.iteratePictures = function(callBackFund) {
  672.         var containerChildren = this._pictureContainer.children;
  673.         if (!Array.isArray(containerChildren)) {
  674.             iterate(this._pictureContainer, function(property) {
  675.                 if (this._pictureContainer[property].hasOwnProperty('children')) {
  676.                     containerChildren = this._pictureContainer[property].children;
  677.                     this._iteratePicturesSub(containerChildren, callBackFund);
  678.                 }
  679.             }.bind(this));
  680.         } else {
  681.             this._iteratePicturesSub(containerChildren, callBackFund);
  682.         }
  683.     };

  684.     Spriteset_Base.prototype._iteratePicturesSub = function(containerChildren, callBackFund) {
  685.         for (var i = containerChildren.length - 1; i >= 0; i--) {
  686.             if (!callBackFund(containerChildren[i])) {
  687.                 break;
  688.             }
  689.         }
  690.     };

  691.     //=============================================================================
  692.     // Sprite_Picture
  693.     //  ピクチャのタッチ状態からのコモンイベント呼び出し予約を追加定義します。
  694.     //=============================================================================
  695.     var _Sprite_Picture_initialize      = Sprite_Picture.prototype.initialize;
  696.     Sprite_Picture.prototype.initialize = function(pictureId) {
  697.         _Sprite_Picture_initialize.call(this, pictureId);
  698.         this._triggerHandler     = [];
  699.         this._triggerHandler[1]  = this.isTriggered;
  700.         this._triggerHandler[2]  = this.isCancelled;
  701.         this._triggerHandler[3]  = this.isLongPressed;
  702.         this._triggerHandler[4]  = this.isOnFocus;
  703.         this._triggerHandler[5]  = this.isOutFocus;
  704.         this._triggerHandler[6]  = this.isReleased;
  705.         this._triggerHandler[7]  = this.isRepeated;
  706.         this._triggerHandler[8]  = this.isPressed;
  707.         this._triggerHandler[9]  = this.isWheelTriggered;
  708.         this._triggerHandler[10] = this.isDoubleTriggered;
  709.         this._triggerHandler[11] = this.isMoved;
  710.         this._triggerHandler[12] = this.isMovedAndPressed;
  711.         this._onMouse            = false;
  712.         this._outMouse           = false;
  713.         this._wasOnMouse         = false;
  714.     };

  715.     var _Sprite_update              = Sprite_Picture.prototype.update;
  716.     Sprite_Picture.prototype.update = function() {
  717.         _Sprite_update.apply(this, arguments);
  718.         this.updateTouch();
  719.     };

  720.     Sprite_Picture.prototype.updateTouch = function() {
  721.         this.updateMouseMove();
  722.         this.updateStroke();
  723.         this.updatePointer();
  724.     };

  725.     Sprite_Picture.prototype.updateMouseMove = function() {
  726.         if (this.isIncludePointer()) {
  727.             if (!this._wasOnMouse) {
  728.                 this._onMouse    = true;
  729.                 this._wasOnMouse = true;
  730.             }
  731.         } else if (this._wasOnMouse) {
  732.                 this._outMouse   = true;
  733.                 this._wasOnMouse = false;
  734.             }
  735.     };

  736.     Sprite_Picture.prototype.isIncludePointer = function() {
  737.         return this.isTouchable() && this.isTouchPosInRect() && !this.isTransparent();
  738.     };

  739.     Sprite_Picture.prototype.updateStroke = function() {
  740.         var strokeNum = $gameScreen.getPictureSid(this._pictureId);
  741.         if (strokeNum > 0 && TouchInput.isPressed() && this.isIncludePointer()) {
  742.             var value = $gameVariables.value(strokeNum);
  743.             $gameVariables.setValue(strokeNum, value + TouchInput.pressedDistance);
  744.         }
  745.     };

  746.     Sprite_Picture.prototype.updatePointer = function() {
  747.         var strokeNum = $gameScreen.getPicturePid(this._pictureId);
  748.         if (strokeNum > 0) {
  749.             this.opacity  = TouchInput.isPressed() ? 255 : 0;
  750.             this.x        = TouchInput.x;
  751.             this.y        = TouchInput.y;
  752.             this.anchor.x = 0.5;
  753.             this.anchor.y = 0.5;
  754.         }
  755.     };

  756.     Sprite_Picture.prototype.callTouch = function() {
  757.         var commandIds = $gameScreen.getPictureCid(this._pictureId);
  758.         if (!commandIds || SceneManager.isNextScene(Scene_Battle)) {
  759.             return;
  760.         }
  761.         for (var i = 0, n = this._triggerHandler.length; i < n; i++) {
  762.             var handler = this._triggerHandler[i];
  763.             if (handler && commandIds[i] && handler.call(this) && (this.triggerIsFocus(i) || !this.isTransparent())) {
  764.                 this.fireTouchEvent(commandIds, i);
  765.             }
  766.         }
  767.     };

  768.     Sprite_Picture.prototype.fireTouchEvent = function(commandIds, i) {
  769.         if (this.isTouchSuppress()) {
  770.             TouchInput.suppressEvents();
  771.         }
  772.         if (this.triggerIsLongPressed(i)) TouchInput._pressedTime = -60;
  773.         if (this.triggerIsOnFocus(i)) this._onMouse = false;
  774.         if (this.triggerIsOutFocus(i)) this._outMouse = false;
  775.         $gameTemp.onTouchPicture(commandIds[i], this._pictureId);
  776.     };

  777.     Sprite_Picture.prototype.isTouchSuppress = function() {
  778.         return paramSuppressTouchSwitch > 0 ? $gameSwitches.value(paramSuppressTouchSwitch) : paramSuppressTouch;
  779.     };

  780.     Sprite_Picture.prototype.triggerIsLongPressed = function(triggerId) {
  781.         return triggerId === 3;
  782.     };

  783.     Sprite_Picture.prototype.triggerIsOnFocus = function(triggerId) {
  784.         return triggerId === 4;
  785.     };

  786.     Sprite_Picture.prototype.triggerIsOutFocus = function(triggerId) {
  787.         return triggerId === 5;
  788.     };

  789.     Sprite_Picture.prototype.triggerIsFocus = function(triggerId) {
  790.         return this.triggerIsOnFocus(triggerId) || this.triggerIsOutFocus(triggerId);
  791.     };

  792.     Sprite_Picture.prototype.isTransparent = function() {
  793.         if (this.isTouchPosInFrameWindow()) return false;
  794.         if (!this.isValidTransparent()) return false;
  795.         if (this.opacity === 0) return true;
  796.         var dx  = this.getTouchScreenX() - this.x;
  797.         var dy  = this.getTouchScreenY() - this.y;
  798.         var sin = Math.sin(-this.rotation);
  799.         var cos = Math.cos(-this.rotation);
  800.         var bx  = Math.floor(dx * cos + dy * -sin) / this.scale.x + this.anchor.x * this.width;
  801.         var by  = Math.floor(dx * sin + dy * cos) / this.scale.y + this.anchor.y * this.height;
  802.         return this.bitmap.getAlphaPixel(bx, by) === 0;
  803.     };

  804.     Sprite_Picture.prototype.isValidTransparent = function() {
  805.         var transparent = $gameScreen.getPictureTransparent(this._pictureId);
  806.         return transparent !== null ? transparent : paramTransparentConsideration;
  807.     };

  808.     Sprite_Picture.prototype.screenWidth = function() {
  809.         return (this.width || 0) * this.scale.x;
  810.     };

  811.     Sprite_Picture.prototype.screenHeight = function() {
  812.         return (this.height || 0) * this.scale.y;
  813.     };

  814.     Sprite_Picture.prototype.screenX = function() {
  815.         return (this.x || 0) - this.anchor.x * this.screenWidth();
  816.     };

  817.     Sprite_Picture.prototype.screenY = function() {
  818.         return (this.y || 0) - this.anchor.y * this.screenHeight();
  819.     };

  820.     Sprite_Picture.prototype.minX = function() {
  821.         return Math.min(this.screenX(), this.screenX() + this.screenWidth());
  822.     };

  823.     Sprite_Picture.prototype.minY = function() {
  824.         return Math.min(this.screenY(), this.screenY() + this.screenHeight());
  825.     };

  826.     Sprite_Picture.prototype.maxX = function() {
  827.         return Math.max(this.screenX(), this.screenX() + this.screenWidth());
  828.     };

  829.     Sprite_Picture.prototype.maxY = function() {
  830.         return Math.max(this.screenY(), this.screenY() + this.screenHeight());
  831.     };

  832.     Sprite_Picture.prototype.isTouchPosInRect = function() {
  833.         if (this.isTouchPosInFrameWindow()) return true;
  834.         var dx  = this.getTouchScreenX() - this.x;
  835.         var dy  = this.getTouchScreenY() - this.y;
  836.         var sin = Math.sin(-this.rotation);
  837.         var cos = Math.cos(-this.rotation);
  838.         var rx  = this.x + Math.floor(dx * cos + dy * -sin);
  839.         var ry  = this.y + Math.floor(dx * sin + dy * cos);
  840.         return (rx >= this.minX() && rx <= this.maxX() && ry >= this.minY() && ry <= this.maxY());
  841.     };

  842.     Sprite_Picture.prototype.isTouchPosInFrameWindow = function() {
  843.         if (!this._frameWindow) return false;
  844.         var frame = this._frameWindow;
  845.         var x     = this.getTouchScreenX();
  846.         var y     = this.getTouchScreenY();
  847.         return frame.x <= x && frame.x + frame.width >= x && frame.y <= y && frame.y + frame.height >= y;
  848.     };

  849.     Sprite_Picture.prototype.isTouchable = function() {
  850.         return this.bitmap && this.visible && this.scale.x !== 0 && this.scale.y !== 0;
  851.     };

  852.     Sprite_Picture.prototype.isTriggered = function() {
  853.         return this.isTouchEvent(TouchInput.isTriggered);
  854.     };

  855.     Sprite_Picture.prototype.isCancelled = function() {
  856.         return this.isTouchEvent(TouchInput.isCancelled);
  857.     };

  858.     Sprite_Picture.prototype.isLongPressed = function() {
  859.         return this.isTouchEvent(TouchInput.isLongPressed);
  860.     };

  861.     Sprite_Picture.prototype.isPressed = function() {
  862.         return this.isTouchEvent(TouchInput.isPressed);
  863.     };

  864.     Sprite_Picture.prototype.isReleased = function() {
  865.         return this.isTouchEvent(TouchInput.isReleased);
  866.     };

  867.     Sprite_Picture.prototype.isRepeated = function() {
  868.         return this.isTouchEvent(TouchInput.isRepeated);
  869.     };

  870.     Sprite_Picture.prototype.isOnFocus = function() {
  871.         return this._onMouse;
  872.     };

  873.     Sprite_Picture.prototype.isOutFocus = function() {
  874.         return this._outMouse;
  875.     };

  876.     Sprite_Picture.prototype.isMoved = function() {
  877.         return this.isTouchEvent(TouchInput.isMoved);
  878.     };

  879.     Sprite_Picture.prototype.isMovedAndPressed = function() {
  880.         return this.isTouchEvent(TouchInput.isMoved) && TouchInput.isPressed();
  881.     };

  882.     Sprite_Picture.prototype.isWheelTriggered = function() {
  883.         return this.isTouchEvent(TouchInput.isWheelTriggered);
  884.     };

  885.     Sprite_Picture.prototype.isDoubleTriggered = function() {
  886.         return this.isTouchEvent(TouchInput.isDoubleTriggered);
  887.     };

  888.     Sprite_Picture.prototype.isTouchEvent = function(triggerFunc) {
  889.         return this.isTouchable() && triggerFunc.call(TouchInput) && this.isTouchPosInRect();
  890.     };

  891.     Sprite_Picture.prototype.getTouchScreenX = function() {
  892.         return $gameScreen.disConvertPositionX(TouchInput.x);
  893.     };

  894.     Sprite_Picture.prototype.getTouchScreenY = function() {
  895.         return $gameScreen.disConvertPositionY(TouchInput.y);
  896.     };

  897.     Sprite_Picture.prototype.isIdEquals = function(pictureId) {
  898.         return this._pictureId === pictureId;
  899.     };

  900.     //=============================================================================
  901.     // Input
  902.     //  ピクチャクリックをキー入力に紐付けます。
  903.     //=============================================================================
  904.     Input._bindKeyStateFrames = new Map();
  905.     Input.bindKeyState        = function(name) {
  906.         this._currentState[name] = true;
  907.         this._bindKeyStateFrames.set(name, 5);
  908.     };

  909.     var _Input_update = Input.update;
  910.     Input.update      = function() {
  911.         _Input_update.apply(this, arguments);
  912.         this._updateBindKeyState();
  913.     };

  914.     Input._updateBindKeyState = function() {
  915.         this._bindKeyStateFrames.forEach(function(frame, keyName) {
  916.             frame--;
  917.             if (frame === 0 || !this._currentState[keyName]) {
  918.                 this._currentState[keyName] = false;
  919.                 this._bindKeyStateFrames.delete(keyName);
  920.             } else {
  921.                 this._bindKeyStateFrames.set(keyName, frame);
  922.             }
  923.         }, this);
  924.     };

  925.     //=============================================================================
  926.     // TouchInput
  927.     //  ホイールクリック、ダブルクリック等を実装
  928.     //=============================================================================
  929.     TouchInput.keyDoubleClickInterval = 300;
  930.     TouchInput._pressedDistance       = 0;
  931.     TouchInput._prevX                 = -1;
  932.     TouchInput._prevY                 = -1;

  933.     Object.defineProperty(TouchInput, 'pressedDistance', {
  934.         get         : function() {
  935.             return this._pressedDistance;
  936.         },
  937.         configurable: true
  938.     });

  939.     TouchInput.suppressEvents = function() {
  940.         this._triggered       = false;
  941.         this._cancelled       = false;
  942.         this._released        = false;
  943.         this._wheelTriggered  = false;
  944.         this._doubleTriggered = false;
  945.     };

  946.     TouchInput._onMouseMove = function(event) {
  947.         var x = Graphics.pageToCanvasX(event.pageX);
  948.         var y = Graphics.pageToCanvasY(event.pageY);
  949.         this._onMove(x, y);
  950.     };

  951.     var _TouchInput_clear = TouchInput.clear;
  952.     TouchInput.clear      = function() {
  953.         _TouchInput_clear.apply(this, arguments);
  954.         this._events.wheelTriggered  = false;
  955.         this._events.doubleTriggered = false;
  956.     };

  957.     var _TouchInput_update = TouchInput.update;
  958.     TouchInput.update      = function() {
  959.         _TouchInput_update.apply(this, arguments);
  960.         this._wheelTriggered         = this._events.wheelTriggered;
  961.         this._doubleTriggered        = this._events.doubleTriggered;
  962.         this._events.wheelTriggered  = false;
  963.         this._events.doubleTriggered = false;
  964.     };

  965.     TouchInput.isWheelTriggered = function() {
  966.         return this._wheelTriggered;
  967.     };

  968.     TouchInput.isDoubleTriggered = function() {
  969.         return this._doubleTriggered;
  970.     };

  971.     var _TouchInput_onMiddleButtonDown = TouchInput._onMiddleButtonDown;
  972.     TouchInput._onMiddleButtonDown     = function(event) {
  973.         _TouchInput_onMiddleButtonDown.apply(this, arguments);
  974.         var x = Graphics.pageToCanvasX(event.pageX);
  975.         var y = Graphics.pageToCanvasY(event.pageY);
  976.         if (Graphics.isInsideCanvas(x, y)) {
  977.             this._onWheelTrigger(x, y);
  978.         }
  979.     };

  980.     TouchInput._onWheelTrigger = function(x, y) {
  981.         this._events.wheelTriggered = true;
  982.         this._x                     = x;
  983.         this._y                     = y;
  984.     };

  985.     var _TouchInput_onTrigger = TouchInput._onTrigger;
  986.     TouchInput._onTrigger     = function(x, y) {
  987.         if (this._date && Date.now() - this._date < this.keyDoubleClickInterval)
  988.             this._events.doubleTriggered = true;
  989.         this._pressedDistance = 0;
  990.         this._prevX           = x;
  991.         this._prevY           = y;
  992.         _TouchInput_onTrigger.apply(this, arguments);
  993.     };

  994.     var _TouchInput_onMove = TouchInput._onMove;
  995.     TouchInput._onMove     = function(x, y) {
  996.         if (this.isPressed()) this._pressedDistance = Math.abs(this._prevX - x) + Math.abs(this._prevY - y);
  997.         this._prevX = x;
  998.         this._prevY = y;
  999.         _TouchInput_onMove.apply(this, arguments);
  1000.     };

  1001.     var _TouchInput_onRelease = TouchInput._onRelease;
  1002.     TouchInput._onRelease     = function(x, y) {
  1003.         this._pressedDistance = 0;
  1004.         this._prevX           = x;
  1005.         this._prevY           = y;
  1006.         _TouchInput_onRelease.apply(this, arguments);
  1007.     };
  1008. })();
复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

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

GMT+8, 2024-12-3 06:23

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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