首页 > 解决方案 > p5.j​​s mousePressed 有效,但 doublePressed 无效?

问题描述

在编写我自己的扫雷游戏时,我来到了一个阶段(最后一个阶段),我必须介绍标志的概念。目前,我正在使用mousePressed()打开任何可能是地雷的单元格。但是我无法弄清楚如何标记任何单元格,就像我尝试使用的那样,doubleClicked()但在这种情况下它不起作用。p5.js有没有人对此有任何提示,或者任何可能简单地标记单元格的内置工具?

编辑:

https://github.com/abj54/minesweeper

我的代码在上面的 repo 中,供任何想要阅读它的人使用。就标志而言,它是让用户猜测给定单元中的哪个可能是地雷的基本指标。

标签: p5.js

解决方案


由于 dblclick 调用了事件更改,因此在同一对象上侦听展位事件是有问题的:

  1. 鼠标按下
  2. mouseup
  3. 点击
  4. 鼠标按下
  5. mouseup
  6. 点击
  7. 数据库点击

P5.js 检查窗口的 click/dblclick 事件,因此您不应同时使用这两个函数(click 和 dblclick)。但是你可以使用带有 Timeout 的 click 事件来解决这个问题。

var clicked=false, clickTimeout=300; 
function mouseClicked(){
  if(!clicked){
    clicked=true;
    setTimeout(function(){
      if(clicked){
        console.log("single click");
        clicked=false;
        //single ClickStuff

      }
    },clickTimeout);
  }else{
    clicked=false;
    console.log("double click");
    //double click Stuff
  }
}

因此,如果调用第二次点击并做出反应,您正在等待 clickTimeout 定义的时间量。


推荐阅读