【问题标题】:Javascript - left mouse button function executes only once LMB is releasedJavascript - 鼠标左键功能仅在 LMB 释放后执行
【发布时间】:2015-10-18 21:15:23
【问题描述】:

我正在尝试制作一个HTML5游戏,只要玩家按下LMB,子弹就会不断产生,一旦释放LMB,射击就会停止。这是我的功能:

document.onclick = function(mouse){ 
    console.log("Shoot");
}

只有在释放 LMB 后,该消息才会显示在控制台日志中。 我确实查看了stackoverflow并发现了这个: Qt mouseMoveEvent only when left mouse button is pressed 但我没能把它整合到我的画布中……它什么也做不了。 感谢您的宝贵时间。

【问题讨论】:

  • 如果“子弹生成”是指console.log("shoot");,则只需使用mousedown 而不是.onclick。但是如果您希望某些功能继续运行(例如fireBullet();同时键被按住,您可以参考我的回答。

标签: javascript function mouse


【解决方案1】:

如果您需要在按下鼠标时执行代码,您应该使用 mousedown 而不是 onclick

查看 w3c 上的 鼠标事件 示例。 http://www.w3schools.com/js/js_events_examples.asp

【讨论】:

    【解决方案2】:

    “onclick”在鼠标点击时调用该函数。您需要一个更具体的事件侦听器。

    假设您的用例准确无误,您要寻找的是“onmousedown”。

    查看此链接了解更多信息:http://www.w3schools.com/jsref/event_onmousedown.asp

    只需将“onclick”替换为“onmousedown”即可。

    希望有帮助!!

    【讨论】:

      【解决方案3】:

      onclick 方法在您释放鼠标按钮而不是被按住时调用。您需要的是mousedown 方法。

      另外,您需要稍微改写一下您的问题。据我了解,

      您希望在鼠标键按住时发生一些事情 下来。

      为此,您需要在某个合理的时间间隔内调用mousedown 活动。

      var mousedownID = -1;  //Global ID of mouse down interval
      function mousedown(event) {
        if(mousedownID==-1)  //Prevent multimple loops!
           mousedownID = setInterval(whilemousedown, 100 /*execute every 100ms*/);
      
      
      }
      function mouseup(event) {
         if(mousedownID!=-1) {  //Only stop if exists
           clearInterval(mousedownID);
           mousedownID=-1;
         }
      
      }
      function whilemousedown() {
         /*put your code here*/
         /* i.e, whatever you what to keep on happening while the button is down*/
      }
      //Assign events
      document.addEventListener("mousedown", mousedown);
      document.addEventListener("mouseup", mouseup);
      //Also clear the interval when user leaves the window with mouse
      document.addEventListener("mouseout", mouseup);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-10-17
        • 2012-12-12
        • 2022-08-18
        • 2011-10-07
        • 2014-10-15
        • 2017-09-30
        • 1970-01-01
        • 2021-09-29
        相关资源
        最近更新 更多