按下其他键时检测鼠标单击

时间:2018-02-17 14:48:14

标签: javascript click p5.js

我正在尝试制作游戏,而我正在使用WASD控件。您有时需要在移动时点击,但mouseIsPressedmousePressed()mouseClicked()未检测到它。

我只需要在按下另一个键的同时检测到一次点击。

示例代码:

function setup() {
  createCanvas(windowWidth, windowHeight).mousePressed(function() {
    console.log("mousePressed");
  });
}

function draw() {
  if (keyIsPressed) {
    console.log("keyIsPressed");  // if you press a key, then click, this is still the only thing being logged
  }
  if (mouseIsPressed) {
    console.log("mouseIsPressed");
  }
}

function mouseClicked() {
  console.log("mouseClicked");
}
<!DOCTYPE html>
<html>
<head>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.6.0/p5.js"></script>
  <script src="sketch.js"></script>
</head>
</html>

2 个答案:

答案 0 :(得分:3)

这是另一个演示问题的简单程序:

function setup() {
  createCanvas(windowWidth, windowHeight);
}

function draw() {
    background(255, 0, 0);
  if (keyIsPressed) {
    text("keyIsPressed", 100, 100);
    }
  if (mouseIsPressed) {
    text("mouseIsPressed", 200, 200);
  }
}

实际上,我认为这个问题比P5.j更普遍。打开另一个程序(我使用基本文本编辑器)并按住键,然后尝试移动鼠标。对我来说,每当我按下一个键时,我的鼠标停止响应。

然后我用谷歌搜索“按住键阻止鼠标移动”,其中有一堆结果,包括this one。事实证明,问题是由使用触控板而不是鼠标引起的。显然,触控板具有在按下键时禁用它们的设置。

使用“真正的”鼠标可以在您的程序和我的程序中完美运行。所以解决方案是更改触控板设置,或者去获取鼠标。

答案 1 :(得分:-2)

在下面的代码中,我可以同时看到鼠标和键

    function setup() {
        createCanvas(100, 100);
        background(51);
    }

    function draw() {
        if (keyIsPressed) {
            if(key=="w"){
                print("w")
            } else if(key=="a"){
                print("a")
            } else if(key=="s"){
                print("s")
            } else if(key=="d"){
                print("d")
            }
            if (mouseIsPressed) {
                print("clic");
            }
        } else if (mouseIsPressed) {
            print("clic")
        }
    }

这对你有用吗?