Project1

标题: 想请教MV里判断鼠标点击的脚本时什么?出BUG了 [打印本页]

作者: rexuegg123    时间: 2019-2-26 13:54
标题: 想请教MV里判断鼠标点击的脚本时什么?出BUG了
本帖最后由 rexuegg123 于 2019-3-4 10:53 编辑

如题:判断鼠标点击的脚本是什么 (左键和右键)?



谢谢1楼回复。我主要是想做个鼠标点击事件,效果就像MV游戏里右键的功能差不多,点击触发某事件。

测试代码如下(放在公共事件库里并行处理,10号开关):

if (TouchInput.isTriggered()==true){
  alert(1);
};


测试效果达到预期,但还是出了个BUG:10号开关关闭的时候,在地图上人物正常行走,就是点击一下鼠标,人物到相应位置……但开关打开后,就算鼠标没有点击,相对于人物行走也会处于点击状态,即人物会一直行走,光标移到哪里就自动走到那里即使没有点击。


作者: yang1zhi    时间: 2019-2-26 14:17
单击
TouchInput.isTriggered()
取消
TouchInput.isCancelled()

重复
TouchInput.isRepeated()


作者: rexuegg123    时间: 2019-2-28 13:51
yang1zhi 发表于 2019-2-26 14:17
单击
TouchInput.isTriggered()
取消


谢谢回复。我主要是想做个鼠标点击事件,效果就像MV游戏里右键的功能差不多,点击触发某事件。

测试代码如下(放在公共事件库里并行处理,10号开关):

if (TouchInput.isTriggered()==true){
  alert(1);
};


测试效果达到预期,但还是出了个BUG:10号开关关闭的时候,在地图上任务正常行走,就是点击一下鼠标,任务到相应位置……但开关打开后,就算鼠标没有点击,相对与人物行走也会处于点击状态,即人物会一直行走,光标移到哪里就自动走到那里即使没有点击。


作者: x水管修理工x    时间: 2019-3-3 18:15
rexuegg123 发表于 2019-2-28 13:51
谢谢回复。我主要是想做个鼠标点击事件,效果就像MV游戏里右键的功能差不多,点击触发某事件。

测试代码 ...

楼主是不是想说让人物移动到某处吗?
$gameTemp.setDestination(8,10);
//让主角移动到某个位置。
像这样直接指定位置不就可以了
作者: rexuegg123    时间: 2019-3-4 10:51
x水管修理工x 发表于 2019-3-3 18:15
楼主是不是想说让人物移动到某处吗?
$gameTemp.setDestination(8,10);
//让主角移动到某个位置。


不是。根据我贴出的代码:该事件的开关打开,只要我点击鼠标就会弹窗口,即“alert(1);”……这个目的已经达到了。但是同时(该事件的开关打开的状态下),在地图上,鼠标的光标会一直闪烁且人物会一直行走,光标移动人物就跟着移动,即使没有点击鼠标的实际操作。(鼠标似乎一直处于点击状态,但此时并没有弹窗——“alert(1);”)

这个BUG怎么破?
作者: rexuegg123    时间: 2019-3-5 15:19
x水管修理工x 发表于 2019-3-3 18:15
楼主是不是想说让人物移动到某处吗?
$gameTemp.setDestination(8,10);
//让主角移动到某个位置。

你真是太懂我了,图片公共事件插件我早已经用上了…………不过做一个背包就用了50张图片,还想做仓库、技能什么的,该插件100张得上限根本不够用。

所以才会想到用鼠标点击事件来实现。
作者: x水管修理工x    时间: 2019-3-6 13:38
本帖最后由 x水管修理工x 于 2019-3-6 17:26 编辑
rexuegg123 发表于 2019-3-5 15:19
你真是太懂我了,图片公共事件插件我早已经用上了…………不过做一个背包就用了50张图片,还想做仓库、技 ...


那楼主看看我的方法吧
//=禁止行走=
$gameTemp.setDestination($gamePlayer.x+1,$gamePlayer.y);
Scene_Map.prototype.processMapTouch = function() {};
先用这段禁止掉角色的行走
//=恢复行走=
Scene_Map.prototype.processMapTouch = function() {
    if (TouchInput.isTriggered() || this._touchCount > 0) {
        if (TouchInput.isPressed()) {
            if (this._touchCount === 0 || this._touchCount >= 15) {
                var x = $gameMap.canvasToMapX(TouchInput.x);
                var y = $gameMap.canvasToMapY(TouchInput.y);
                $gameTemp.setDestination(x, y);
            }
            this._touchCount++;
        } else {
            this._touchCount = 0;
        }
    }
};
事件结束后再用同样的方法恢复寻路脚本
我一直用的这个方法,百试不爽
作者: rexuegg123    时间: 2019-3-27 11:56
x水管修理工x 发表于 2019-3-6 13:38
那楼主看看我的方法吧
//=禁止行走=
$gameTemp.setDestination($gamePlayer.x+1,$gamePlayer.y);

楼主,恢复行走那段,出错了,跳出找不到函数的提示……
直接用函数里面的内容的话到没跳出错误提示,但没效果……事件结束后无法恢复行走……

作者: x水管修理工x    时间: 2019-3-27 14:48
rexuegg123 发表于 2019-3-27 11:56
楼主,恢复行走那段,出错了,跳出找不到函数的提示……
直接用函数里面的内容的话到没跳出错误提示,但 ...

//=恢复行走=
Scene_Map.prototype.processMapTouch = function() {
    this.updatePictureEvents();
    if (this.allowProcessMapTouch()) {
      Yanfly.PCE.Scene_Map_processMapTouch.call(this);
    }
};
楼上出错的话就用这段恢复行走




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1